问题描述
有没有办法在使用Vim时访问终端?
我不想打开另一个终端或保存并退出当前终端。
最佳解决办法
您可以向vim发送SIGTSTP信号。您可以按ctrl
+ z
执行此操作。 Vim将在后台暂停,您可以使用终端。在终端中键入fg
以恢复vim。
额外提示:这适用于几乎所有终端应用程序。使用bg
使应用程序能够在后台继续运行。
次佳解决办法
在vim中,只需输入:
:!sh
!启动一个外部进程 – 在本例中为sh,另一个shell。退出shell后,Control将返回vim。如果你想与vim同时使用shell,请添加&到sh命令的末尾:
:!sh&
第三种解决办法
您可以使用:shell
命令(或简称:sh
)。来自:help :shell
:
This command starts a shell. When the shell exits (after the “exit” command) you return to Vim. The name for the shell command comes from ‘shell’ option.
默认情况下,在Ubuntu上,这将为您提供bash。键入exit
以在完成后返回vim。
第四种办法
作为所有答案的补充。
您可以安装ConqueTerm plugin
此插件提供在vim缓冲区内运行交互式程序的功能。
安装完成后,您可以将这2行添加到.vimrc
:
:nnoremap <S-w> :q!<CR>
:nnoremap <S-t> :ConqueTermSplit bash<CR>
您可以通过按Shift
+ T
运行bash
,并通过按Shift
+ W
关闭当前的Conque选项卡
如果您需要快速打开/关闭bash
,这是可行的。
这是gif,显示它的外观
第五种办法
自从最近的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.
第六种办法
屏幕或byobu的另一个选项是在这些程序中打开一个选项卡。这些程序使得保持terminal-session c.q.相当容易。打开 shell 并用键盘在这些屏幕之间切换。