[英]How to open a terminal in new tab from VIM?
当我使用 4 个文件时,所有文件都在选项卡(VIM)中打开。 我想保存更改并编译它而不必关闭选项卡,即我想在新选项卡中打开一个终端以及现有的 4?
我应该如何在 VIM 中执行此操作?
:tab ter
在新选项卡中打开终端,而不是像:ter
那样在新窗口中打开终端。 您还可以使用等效的更长的:tab terminal
形式。
在此 Reddit 帖子中感谢用户 wolloda。
额外的信息
使用Ctrl-d
或exit
终止 shell 会关闭终端缓冲区。
Ctrl-w
N
或Ctrl-\ Ctrl-n
将缓冲区置于终端正常模式:击键不转发到 shell,但 Vim 使用正常缓冲区(尽管 shell 作业仍在运行)。 然后,您可以使用gt
更改选项卡,键入 Ex 命令,例如:ls
等。要使终端缓冲区恢复活力, i
, a
, ...
如果你要映射它,我推荐使用:tab ter++kill=hup
,这样当你:qa
终端作业不会阻止 Vim 退出。 这是正常终端仿真器在关闭时发送给其工作的信号。
对于终端模式映射,请使用tnoremap
,例如
tnoremap <S-Tab> <CW>:tabprevious<CR> tnoremap <CN> <CW>N
有关:help :terminal
和:help :tab
的更多信息。
2019 年,vim 现在有了终端模式。
:help terminal
例如,您可以像这样使用它。
# go to terminal-job mode
:terminal
# go to terminal-normal mode
ctrl-w N
# go back to terminal-job mode
i
Vim 8.1现在有一个内置终端,可以用 :term 命令打开。 这提供了与其他 Vim 功能更完整的集成。
原答案:
我建议查看tmux或screen 。 我自己使用 tmux,并且与vim-tmux-navigator一起在终端和 vim 之间移动非常容易。
一种更像 vim 的方法是使用:make
:make
将执行'makeprg'
。 它默认make
哪个是 C 项目中的佼佼者:make
后,quickfix 列表将包含任何错误。:compiler
命令设置你的编译器。:make foo-command
%
表示。 例如:make %
:cnext
和:cprev
在错误之间移动。:copen
在窗口中打开快速修复列表( :cclose
关闭):cwindow
仅在出现错误时打开快速修复列表窗口:cnext
和朋友使用更好的映射。 我建议 Tim Pope 的unimpaired插件<cz>
暂停 vim 并运行您的构建系统。 (缺点:在快速修复列表中松散):!
编译。 (与暂停相同的缺点)例如:!make
:make
完成一些工作如果您刚刚开始,我建议您学习如何使用:make
和 quickfix 列表。 有一个很好的Vimcast插曲介绍了快速修复列表: 使用 :vimgrep 搜索多个文件。 此外,Syntastic 是一种快速启动和运行 linter 的好方法。
Vim 的选项卡与大多数文本编辑器选项卡不同。 它们更像是一组窗口/拆分的视口。 此外,Vim 以缓冲区为中心,而不是像大多数编辑器那样以选项卡为中心。 因此,在没有选项卡的情况下,使用 quickfix 列表之类的功能通常会更容易(如果必须使用选项卡,请参阅:h 'switchbuf
)。 Vim 的选项卡经常妨碍使用拆分,因为有更好的窗口和缓冲区导航命令可用。 我个人打开了许多文件(有时超过 100 个),不使用选项卡,平均使用 1-2 次拆分,没有任何问题。 底线:学习有效地使用缓冲区。
如需更多帮助,请参阅以下内容:
:h :make
:h 'makeprg
:h quickfix
:h :cnext
:h :cope
我特别在寻找这样的东西。
在选项卡中打开所有文件。 然后通过ctrl z
切换到终端模式,播放所需内容,然后在终端中键入fg
返回到选项卡模式。
投票最高的答案使用:tab ter
。 这在 NeoVim 上不起作用(至少对我来说)。 但是,它仍然相当简单:
:tabe term://bash
tabe
是打开e
新tab
并编辑文件。
term://
是一种 NeoVim 打开终端的方式
bash
是您想要使用的那种 shell(例如我使用 zsh,所以我的命令实际上是:tabe term://zsh
)
我创建的一些有用的命令:
" open terminal
if has('nvim')
command Terminal vsplit term://zsh
command TerminalTab tabe term://zsh
else
command Terminal vert term
command TerminalTab tab ter
endif
另一种方式
Ctrl-w:
这让我进入命令行,然后可以输入 tablast tabnext 或 tabprevious
或短版 tabl、tabn、tabp
或者这样:
Ctrl-w gt 和 Ctrl-w gT(下一个选项卡和上一个选项卡)
或 Ctrl-w Number gt(用于特定选项卡)
这也有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.