当前位置: 首页>>技术教程>>正文


在Vim上访问终端

, , ,

问题描述

有没有办法在使用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 并用键盘在这些屏幕之间切换。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1975.html,未经允许,请勿转载。