Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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で編集中のファイルのカーソルのある行を新規タブで開きます。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>