在Vim上访问终端


Answers:


67

您可以发送SIGTSTP信号。您可以通过按ctrl+来执行此操作z。Vim将在后台挂起,您可以使用终端。键入fg终端恢复与VIM。

温馨提示:这几乎适用于所有终端应用程序。使用bg以使应用程序在后台继续运行。


21
或者只是%代替fg。或%1%2等等,如果您有许多后台作业。jobs命令将列出它们。(假定bash为炮弹。)
Ruslan 2014年

4
我投票支持^ z(和以后的fg)方法,因为该方法几乎可以在所有shell进程中使用-这不是vim,而是一种shell技巧,在其他情况下非常有用。
dman 2014年

35

在vim中,只需键入:

:!sh

:!启动一个外部进程,在本例sh中为另一个外壳。退出shell后,控制权将返回vim。如果要与vim同时使用shell,请添加&到sh命令的末尾:

:!sh&

9
或只是使用:shell
wchargin 2014年

2
这是大多数用途的最佳答案。
Frank Conry 2014年

很好,但是当命令运行服务器时(例如http-server,它会打印出我要查看的日志)呢?我希望能够切换到我的文件,进行编辑,然后再切换回日志。
哥斯达黎加

21

您可以使用:shell命令(或简称:sh)。来自:help :shell

此命令启动外壳程序。当shell退出时(在“ exit”命令之后),您将返回到Vim。shell命令的名称来自'shell'选项。

默认情况下,在Ubuntu上,这将使您获得重击。完成后,键入exit以返回vim。


8

从最近的vim开始,您现在可以执行以下操作:

:terminal

它最初是在Vim 8.0.693中添加的,但存在许多错误。见:help terminal

WARNING: THIS IS ONLY PARTLY IMPLEMENTED, ANYTHING CAN STILL CHANGE

The terminal feature is optional, use this to check if your Vim has it: 
        echo has('terminal')
If the result is "1" you have it.   

[...]

The terminal feature requires the +multi_byte, +job and +channel features.

==============================================================================
1. Basic use                                            terminal-use

This feature is for running a terminal emulator in a Vim window.  A job can be
started connected to the terminal emulator. For example, to run a shell: 
     :term bash

Or to run a debugger: 
     :term gdb vim

The job runs asynchronously from Vim, the window will be updated to show
output from the job, also  while editing in any other window.

7

除了所有答案。

您可以安装ConqueTerm插件

这个插件提供了在vim缓冲区中运行交互式程序的功能。

安装后,您可以将这两行添加到您的.vimrc

:nnoremap <S-w> :q!<CR>
:nnoremap <S-t> :ConqueTermSplit bash<CR>

而你,也就能够运行bashShift+ T,并关闭当前标签Conque按Shift+W

如果您需要快速打开/关闭,这是最佳选择bash

这是gif,表明它的外观


您可以考虑更新帖子吗?您提到的链接似乎已过时
ggulgulia

4

屏幕或byobu的另一种选择是在这些程序中打开一个选项卡。这些程序使保持终端会话cq shell打开并使用键盘在这些屏幕之间切换变得相当容易。


1

使用新版本的vim 8.1,您所要做的就是公正:terminal,瞧!(这是内置的)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.