我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
当前回答
我现在用这个,你可以试试。VimShell
其他回答
有人已经建议https://github.com/Shougo/vimshell.vim,但他们没有提到原因。因此,当我离开这个问题时,我浪费了很多时间去尝试其他(排名更高的)选项。
Shougo/vimshell就是答案。原因如下:
除了作为终端模拟器外,VimShell还允许您以正常和可视模式在终端输出中导航。因此,如果您运行的命令导致您只想使用键盘复制和粘贴输出…VimShell涵盖了这一点。
上面提到的其他选项,包括NeoVim中的:terminal命令,都不能做到这一点。截至2017年2月18日,Neovim的终端已经接近,但至少在以下方面还不够:
将光标移动到缓冲区的末尾,而不是像VimShell那样将光标保持在最后一个位置。太浪费时间了。 不支持modifiable = 1参见Github上的讨论,所以像vim-easymotion这样的有用插件不能使用。 不像Vimshell那样支持显示行号。
不要在其他选择上浪费时间,包括Neovim的:终端。用VimShell吧。
这个问题相当老了,但是对于那些发现它的人来说,有一个新的可能的解决方案:Neovim包含一个成熟的、一流的终端模拟器,它所做的正是ConqueTerm试图做的。只需运行:term <您的命令这里>。
<C-\><C-n>将退出术语模式返回正常模式。如果你像我一样,更喜欢escape仍然退出term模式,你可以把这个添加到你的nvimrc:
tnoremap <ESC><ESC> <C-\><C-N>
然后按ESC两次将退出终端模式回到正常模式,因此您可以操作仍在运行的命令写入的缓冲区。
不过请记住,由于nvim在我发布这个答案的时候正在进行大量的开发,可能会添加另一种退出终端模式的方法。当Ctrl+\Ctrl+n从几乎任何模式切换到正常模式时,我不期望这个答案会出错,但请注意,如果它不起作用,这个答案可能已经过时了。
https://github.com/neovim/neovim
:sh然后按Ctrl+D返回(bash)
更新:
您可以将vim中的Ctrl+D映射为run:sh,这允许您在bash和vim之间快速切换。
noremap <C-d>:sh<cr>
假设你的vim版本首先支持+term命令,将shell设置为vim在一个命令中使用(例如set=/usr/bin/zsh),然后运行命令+term(即bo 15vs +term)。你可能需要对你的Windows做一些额外的操作(例如删除一个并旋转),但你会有你的终端。
我现在用这个,你可以试试。VimShell