web-dev-qa-db-ja.com

Vimで端末にアクセスする

Vim を使用しながら端末にアクセスする方法はありますか?

別のターミナルを開いたり、現在のターミナルを保存して終了したりしません。

40

VimにSIGTSTPシグナルを送信できます。これを行うには ctrl+z。 Vimはバックグラウンドで中断され、ターミナルを使用できます。端末でfgと入力して、vimで再開します。

ボーナスのヒント:これは、ほぼすべてのターミナルアプリケーションで機能します。 bgを使用して、アプリケーションがバックグラウンドで実行を継続できるようにします。

67
noleti

Vimで、次のように入力します。

:!sh

:!は外部プロセス(この場合はsh、別のシェル)を起動します。シェルを終了すると、制御はvimに戻ります。シェルをvimと同時に使用する場合は、&をshコマンドの最後に追加します。

:!sh&
35
sbell

:Shellコマンド(または短い形式の:sh)を使用できます。 :help :Shellから:

このコマンドはシェルを起動します。シェルが終了すると( "exit"コマンドの後)、Vimに戻ります。 Shellコマンドの名前は「Shell」オプションに由来します。

デフォルトでは、Ubuntuではこれによりbashが提供されます。完了したら、exitと入力してvimに戻ります。

21
evilsoup

最近のvim以降、次のことができるようになりました。

:terminal

これは最初にVim 8.0.69 で追加されましたが、多くのバグがありました。 :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
gauteh

すべての答えに加えて。

ConqueTermプラグイン をインストールできます

このプラグインは、vimバッファー内で対話型プログラムを実行する機能を提供します。

インストール後、次の2行を.vimrcに追加できます。

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

を押すと、bashを実行できます。 Shift + Tを押して、現在のConqueタブを閉じます Shift + W

高速な開閉が必要な場合は、bashを使用します。

これは gif です。

7
c0rp

Screenまたはbyobuのもう1つのオプションは、これらのプログラム内でタブを開くことです。これらのプログラムを使用すると、ターミナルセッションc.qを簡単に保持できます。シェルを開いて、キーボードでこれらの画面を切り替えます。

4
immeëmosol

Vim 8.1の新しいバージョンでは、必要な作業は:terminalと出来上がりです! (これは組み込みです)

1
neelabalan