我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
当前回答
2011年8月过时
看看征服壳(也在GitHub上)。允许您在vim中运行任何交互程序,而不仅仅是一个shell。
其他回答
最终,一个原生的:terminal命令于2017年添加到vim中。
下面是:terminal自述的节选:
此特性用于在Vim窗口中运行终端模拟器。一个 作业可以连接到终端模拟器启动。例如, 运行一个shell: :任期bash 或者运行build命令: :term make myprogram 作业从Vim异步运行,窗口将更新为 在另一个窗口中编辑时显示作业的输出。
不,你不能:
http://vimdoc.sourceforge.net/htmldoc/tips.html#shell-window
如果在您的Vim版本中启用,则可以使用:term命令启动终端。
终端窗口支持被添加到Vim 8。这是一个可选特性,可以在使用+终端特性编译Vim时启用。如果你的Vim版本有终端支持,:echo has('terminal')将输出"1"。
输入:term将使您进入终端作业模式,在此模式下您可以按预期使用终端。
在Terminal-Job模式下,按Ctrl- w N或Ctrl-\ Ctrl-N将模式切换到Terminal-Normal,这允许光标移动,命令运行类似于Vim的Normal模式。若要切换回终端作业模式,请按“i”。
其他回答提到了Neovim中类似的功能。
:项
在Vim 8.1中添加。
请记住,每当终端窗口处于活动状态时,大多数击键将被简单地传递到终端,而不是具有它们通常的功能。Ctrl-W及其子命令是主要的例外。要向终端发送文字^W输入,请按Ctrl-W ..您也可以通过按Ctrl-W:打开Vim:命令行。其他Ctrl-W命令正常工作,因此无论当前选择的是什么类型的窗口,管理窗口的工作都是一样的。
分割屏幕并运行命令term ++curwin在Vim缓冲区中运行终端。下面的命令既能做到这一点,也对我有用:
:bo 10sp | term ++curwin