Vimの端末ウィンドウからホストのVimでファイルを開く
端末機能をサポートした Vim の端末ウィンドウからホストの Vim でファイルを開く方法について。
端末ウィンドウでファイルを開くと、端末ウィンドウの中で Vim が実行されるので Vim の中で Vim が実行される形になる。この挙動は嬉しくないので、ファイルは端末ウィンドウを表示している Vim で開いて欲しい。
:terminal に関する小さい Tipsを読むと、端末ウィンドウから特定のエスケープシーケンスと共に JSON 文字列を標準出力に出力するとそれが実現できるとわかった。ジョブから Vim へ: JSON APIに詳細が書かれている。
これを簡単に実現するためにhttps://github.com/sasaplus1/drop-to-vim.shを作った。
この drop-to-vim
を用いて端末ウィンドウからホストの Vim でファイルを開くには以下のように実行する。
:terminal<CR>
$ drop-to-vim file1.txt file2.txt
これで端末ウィンドウを開いた Vim でファイルが開ける。
端末ウィンドウで実行した Vifm からホストの Vim でファイルを開く
Vifmという、Vim のような操作感をもつファイラーがある。元々の目的は端末ウィンドウの中で実行した Vifm からファイルを開く時にホストの Vim でファイルを開きたいというものだった。
これも https://github.com/sasaplus1/drop-to-vim.sh に同梱の drop-from-vifm
で実現できる。vifmrc
へ以下のように設定を書く。
if $VIM_TERMINAL
set vicmd=drop-from-vifm
endif
Vifm では :help
が実行できるが、これは vicmd
で指定された Vim に引数を渡して実行するようになっている。単純に vicmd
に drop-to-vim
を指定すると :help
が使えなくなるため専用のコマンドを作った。