LoginSignup
2
4

More than 5 years have passed since last update.

アプリケーションの外部ツールからgVimを呼び出す時の設定

Posted at

gVim を外部ツールとして利用する場合、Vimには--remote(--remote-tab--remote-tab-silent等を含む)というオプションがあります(gVimが+clientserverでビルドされている場合)。

このオプションを利用すると、既に起動しているVimのプロセスが存在していた場合、そのアプリケーションウィンドウでファイルを開くことができます。

しかし、わりと不便な欠点もあって、例えば、ファイルを開くときの行数を指定できません。

ふつう、Vimでファイル名と行数を指定する場合、

vim +42 foo/bar.txt

というように指定しますが、--remote 系のオプションをつけてしまうと、この+Nの行数指定が無効になってしまいます。

これでは、Visual Studio からXMLやJSONをVimで編集したい、なんて時に、Vimで開いた後で再度検索したり、行ジャンプしなければならず、不便です。

そこで、これらのオプションを利用することをやめ、別のアプローチをすることにします。

それは、--remote-send オプションで、キーストロークを直に送る方法です。
こうすることにより、コマンドラインに:edit +N foo.txtを外部から注入してファイルを開くことができます。

例えば、Visual Studio から開く場合、以下のような設定となります。

2015-07-13 15_38_29-External Tools.png

  • Title: g&Vim
  • Command: Path\To\gvim.exe
  • Arguments: --remote-send "<C-\><C-n>:tabedit +$(CurLine) $(ItemPath)<CR>"
  • Initial directory: $(ProjectDir)

Arguments 以外の項目はお好みで構いません。

--remote-send の冒頭で <C-\><C-n> を入力しているのは、Vimをどのモードからでもノーマルモードに遷移させるためです。(参照:CTRL-N_CTRL-N)

この例では、:tabedit を指定しているため、VisualStudioで編集中のファイルのカーソルのある行を新規タブで開きます。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4