如何在Vim内部运行终端?
我已经习惯了Emacs,但我正在尝试Vim,看看我更喜欢哪一个 关于Emacs,我喜欢的一点是在Emacs内部运行终端的能力。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡内运行终端。不,您不能:如何在Vim内部运行终端?,vim,Vim,我已经习惯了Emacs,但我正在尝试Vim,看看我更喜欢哪一个 关于Emacs,我喜欢的一点是在Emacs内部运行终端的能力。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡内运行终端。不,您不能: 据我所知,唯一的方法是使用第三方补丁。我不确定您到底想要实现什么(我从未使用过Emacs),但您可以通过键入以下命令在Vim中运行命令: :! somecommand [ENTER] 如果您想键入多个命令,或在shell中玩一段时间,则始终可以使用: :! bash (or
据我所知,唯一的方法是使用第三方补丁。我不确定您到底想要实现什么(我从未使用过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友好且独立。更新的答案(11年后…):
- 如果您选择使用该解决方案,我建议您使用
而不是下面原始答案中建议的tmux
screen
- 现在有一个内置终端,可以用
命令打开。这提供了与其他Vim功能更完整的集成:term
我绝对会推荐这样的东西。Vim是一个文本编辑器,而不是shell 我会使用Ctrl+AS水平分割当前窗口,或者在Ubuntu的屏幕和其他补丁版本中,可以使用Ctrl+A |(管道)垂直分割。然后使用Ctrl+ATab(或在某些系统上相当于Ctrl+ACtrl+I,这可能更容易键入)在窗口之间切换。还有其他命令可以更改窗口的大小和排列 或者,
screen
的一个不太高级的用法就是打开多个全屏窗口并在它们之间切换。这是我通常做的,我只是偶尔使用分屏功能
如果您不熟悉它的用法,这个问题有很多好的提示。您可能想看看
:sh
命令(请参阅Vim中的:help sh
)
我解决这个问题的方法是:
- 按Ctrl+Z暂停Vim
- 在候机楼玩
- 然后,只需键入命令
,就可以返回到您离开Vim的确切位置fg
- :rspec、Cumber和测试/单元的转轮;vimux支持通过
g:vroom\u use\u vimux
- :一组用于轻松运行ruby测试的命令
- :通过Vimux运行Cucumber功能
- :使用tmux进行turboruby测试
- :vimux的一组函数,允许在ipython中运行代码块
- :在vimux中运行前端测试
- 从2011年8月起过期
退房(也在网上)。允许您在vim中运行任何交互式程序,而不仅仅是一个shell。
:sh
然后ctrl+d
返回(bash)
更新:
您可以将vim中的ctrl+d
映射到运行:sh
,这允许您在bash和vim之间快速切换
noremap:sh
我知道我没有直接回答这个问题,但我认为这是一个问题
好办法。没有人提到过tmux(或者至少没有提到它是一个
独立答案)。Tmux是一种类似终端多路复用器的屏幕。最
这两种多路复用器都可以制作,但afaik tmux更容易
配置。而且,目前tmux的开发比以前更加积极
屏幕上,有一个相当大的生态系统围绕着它,像工具,帮助
配置,ecc
另外,对于vim,还有另一个插件:,它在
这两种工具之间的交互。可以使用以下命令调用命令:
:调用vimuxrun命令(“ls”)
该命令在当前窗格vim下方创建一个小的水平分割
他在
如果您不想运行,它还可以让您在提示符下运行
整个指挥部:
vp:VimuxPromptCommand
由于不够,至少有6个“特定于平台的插件”:
这里有一个很好的“用例”:Try,它是vim内部的一个功能非常完整的shell。它的历史和清晰的功能都有点问题,还在开发中,但它仍然很好我现在使用它,你可以试试 这个问题已经很老了,但是对于那些发现它的人来说,有一个新的可能的解决方案:Neovim包含一个成熟的、一流的终端仿真器,它正是ConqueTerm想要做的。只需运行
:term
将退出术语模式返回正常模式。如果您和我一样,更喜欢退出术语模式,您可以将此添加到nvimrc:
tnoremap <ESC><ESC> <C-\><C-N>
tnoremap
然后按ESC两次将退出终端模式回到正常模式,因此您可以操作仍在运行的命令正在写入的缓冲区
尽管请记住,在我发布这个答案时,由于nvim正在进行大量开发,可能会添加另一种退出终端模式的方法。当Ctrl+\Ctrl+n从几乎任何模式切换到正常模式时,我不认为这个答案会出错,但请注意,如果它不起作用,这个答案可能已经过时了
已经有人提出了建议,但他们没有提到原因。因此,当我离开这个问题时,我浪费了很多时间尝试其他(排名更高的)选项
就是答案。原因如下:
除了作为终端仿真器,VimShell还允许您在中导航终端输出
:term bash
:term make myprogram
:bo 10sp | term ++curwin
nmap <leader>tt :below vertical terminal<CR>