我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
当前回答
:项
在Vim 8.1中添加。
请记住,每当终端窗口处于活动状态时,大多数击键将被简单地传递到终端,而不是具有它们通常的功能。Ctrl-W及其子命令是主要的例外。要向终端发送文字^W输入,请按Ctrl-W ..您也可以通过按Ctrl-W:打开Vim:命令行。其他Ctrl-W命令正常工作,因此无论当前选择的是什么类型的窗口,管理窗口的工作都是一样的。
其他回答
有人已经建议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吧。
在vim 8.1.3741中,只需输入:terminal在vim中启动一个终端。
尝试map:nnoremap]t:terminal<CR>更快!
我不确定你到底想要实现什么(我从未使用过Emacs),但你可以在Vim中通过键入以下命令来运行命令:
:! somecommand [ENTER]
如果你想输入几个命令,或者在shell中玩一会儿,你总是可以使用:
:! bash (or your favourite shell) [ENTER]
一旦命令或shell终止,您将得到按Enter返回编辑器窗口的选项
Vim是有意轻量级的,并且缺乏执行非编辑类型事情的能力,就像在Vim窗格/选项卡中运行一个完整的shell一样,但正如上面提到的,有第三方插件,如Vim -shell,允许您执行这类事情。
通常情况下,如果我想在Vim和shell (Bash)之间切换,我只需按CTRL+Z暂停Vim进程,在我的shell中玩,然后当我想返回Vim时键入'fg' -保持我的编辑器和shell良好且独立。
我所知道的唯一方法是使用vim-shell,一个第三方补丁。
2011年8月过时
看看征服壳(也在GitHub上)。允许您在vim中运行任何交互程序,而不仅仅是一个shell。