Vimで端末にアクセスする


40

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

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


新しいタブを開きますか?(Ctrl + Shift + T)
ウィルフ14

2
何回それをする:)私はそれをするのが好きではないD:
モハマドレザレズワニ14

1
tmuxなどのターミナルウィンドウマネージャーを使用してみましたか?
jrg 14

回答:


67

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

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


21
または単にの%代わりにfg。それとも%1%2などあなたは、多くのバックグラウンドジョブを持っている場合。jobsコマンドはそれらをリストします。(bashシェルと仮定します。)
Ruslan 14

4
^ z(およびそれ以降のfg)メソッドに投票します。これはほとんどすべてのシェルプロセスで使用できるためです。これはvimのものではなく、他のコンテキストで非常に役立つシェルトリックの使い方です。
dman

35

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

:!sh

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

:!sh&

9
または、単に使用します:shell
wchargin 14

2
これはほとんどの目的に最適な答えです。
フランクコンリー14

それは素晴らしいことですが、コマンドがサーバーを実行しているときはどうhttp-serverですか?ファイルに切り替えて編集し、ログに戻すことができるようにしたいと思います。
コスタ

21

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

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

デフォルトでは、Ubuntuではこれによりbashが提供されます。入力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バッファー内で対話型プログラムを実行する機能を提供します。

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

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

そして、あなたは実行することができますbash押してShift+をT、と押して、現在のConqueタブ近いですShift+W

高速な開閉が必要な場合に適していますbash

ここにあるGIFは、それがどのように見えるであるかを示すこと


投稿の更新を検討してください。あなたが言及したリンクは時代遅れのようです
-ggulgulia

4

screenまたはbyobuの別のオプションは、それらのプログラム内でタブを開くことです。これらのプログラムを使用すると、ターミナルセッションのcqシェルを開いたままにして、キーボードでそれらの画面を切り替えることが非常に簡単になります。


1

vim 8.1の新しいバージョンを使用すれば、必要な作業はすべて:terminal完了です。(これは組み込みです)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.