如何从VIM在新选项卡中打开终端?

ou6hu8tu  于 2022-11-11  发布在  其他
关注(0)|答案(6)|浏览(302)

当我使用4个文件时,所有文件都在选项卡(VIM)中打开。我想保存更改并编译它,而不必关闭选项卡,即我想在新选项卡中打开一个终端沿着现有的4个?
在VIM中应如何执行此操作?

mccptt67

mccptt671#

:tab ter

在新标签页中打开终端,而不是像:ter那样在新窗口中打开它。您也可以使用等效的、更长的:tab terminal
感谢使用者wolloda in this Reddit post

额外信息

  • 使用Ctrl-dexit终止shell会关闭终端缓冲区。
  • Ctrl-wNCtrl-\ Ctrl-n将缓冲器置于终端正常模式:击键不会被转发到shell,而是被Vim作为一个正常的缓冲区使用(尽管shell任务仍然在运行)。然后你可以使用gt来改变制表符,键入Ex命令,如:ls等。要恢复终端缓冲区,ia,...
  • 如果你要Map这个,我建议使用:tab ter++kill=hup,这样当你使用:qa时,终端作业不会阻止Vim退出。
  • 对于终端模式Map,请使用tnoremap,例如
tnoremap <S-Tab> <C-W>:tabprevious<CR>
tnoremap <C-N>   <C-W>N

有关:help :terminal:help :tab的更多信息。

1yjd4xko

1yjd4xko2#

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
dced5bon

dced5bon3#

一种更有活力的方法是使用:make

:制造商

  • :make将执行'makeprg'。默认值为make,这在C项目中非常有用
  • 运行:make后,快速修复列表将包含所有错误。
  • 通过:compiler命令设置编译器。
  • 可以像:make foo-command这样传递额外的参数
  • 当前文件名可以用%表示,例如:make %

快速修复列表

  • 使用:cnext:cprev在错误之间移动。
  • :copen在窗口中打开快速修复列表(:cclose关闭)
  • :cwindow仅在出现错误时打开快速修复列表窗口
  • 可能想为:cnext和朋友使用更好的Map。我推荐Tim Pope的unimpaired插件

替代项和插件

  • 只需使用<c-z>来挂起Vim并运行您的构建系统。(缺点:在快速修复列表中丢失)
  • 使用:!进行编译。(与挂起的缺点相同)例如:!make
  • Syntastic是一个语法检查系统,用于在保存文件时进行检查
  • Dispatch可以用来在后台运行。
  • 正如@brettanomyces提到的,您可能需要考虑tmuxscreen等终端多路复用器。
  • SingleComplile尝试使用:make,并减少了一些工作量

结论
如果你刚开始使用:make,我建议你学习如何使用:make和快速修复列表。此外,Syntastic是一个很好的方式来快速启动和运行与短绒。

关于选项卡的旁白

Vim的选项卡与大多数文本编辑器的选项卡不同,它们更像是一组窗口/分割的视口。而不是像大多数编辑器那样以标签为中心。因此,使用类似快速修复列表的特性通常在没有标签的情况下更容易(如果必须使用制表符,请参见:h 'switchbuf). Vim'的选项卡经常会妨碍使用分割,因为有更好的窗口和缓冲区导航命令可用。我个人有许多文件打开(有时100+)不使用标签,平均使用1-2个分割没有任何问题。底线:学会use buffers effectively
有关更多帮助,请参阅以下内容:

:h :make
:h 'makeprg
:h quickfix
:h :cnext
:h :cope
bttbmeg0

bttbmeg04#

Vim 8.1现在有一个内置的终端,可以用:term命令打开。这提供了与Vim其余特性更完整的集成。
原始答案:
我会建议看看tmuxscreen。我自己使用tmux,沿着vim-tmux-navigator在终端和vim之间移动是非常容易的。

insrf1ej

insrf1ej5#

对于任何使用 NeoVim 的人:

投票最多的答案使用:tab ter。这在NeoVim上不起作用(至少对我来说是这样)。然而,它仍然相当简单:
:tabe term://bash
tabe正在打开新tabe编辑文件。
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
ki0zmccv

ki0zmccv6#

另一种方式
Ctrl-w组合键:
这将进入命令行,然后可以输入tablast、tabnext或tabprevious
或者简称为tabl、tabn、tabp
还是这样:
Ctrl-w gt和Ctrl-w gT(下一个选项卡和上一个选项卡)
或Ctrl-w Number gt(用于特定选项卡)
那也行。

相关问题