前回に引き続きカーソル下の単語がある場合のTips。カーソル下の単語がファイルパスのとき「
gf」とするとそのファイルをオープンできる。これはスクリプトを読んでいる時に出てくるファイルパスやCのインクルード・ファイルを見たいときに便利。
なので、
端末をもう一つ開いてマウスでコピペしてという使い方はVimの正しい使い方ではない!
スクリプト
例えば、~/.bash_profile を view すると ~/.bashrc を読み込んでいる箇所がある。スクリプトを読む側としてはこの ~/.bashrc で何をしているのか気になるところだ。そこで ~/.bashrc 上にカーソルを持って行き「
gf」と押してみよう。すると ~/.bashrc を開いてジャンプしてくれる!
$ view .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/binexport PATH
ジャンプした先の ~/.bashrc 内では更に /etc/bashrc を読み込んでいる。なので更にそこにカーソルを持って行き「
gf」を押すと見事 /etc/bashrc にまで跳んでくれるのでっす!
戻る場合は、「
Ctrl-^」や「
Ctrl-O」を使う。(厳密には「
Ctrl-O」は前のファイルに戻るという訳ではなく、直前のカーソル位置に戻る。一方、「
Ctrl-^」は直前のファイルに戻るので、連続して実行すると2つのファイルを行ったり来たりしてしまい最初に開いたファイルには戻れない)
よって、/etc/bashrc まで跳んだ場合は「
Ctrl-O」を2度押せば元の ~/.bash_profile に戻って来れるでしょう。
タブで開く
上述のように「
gf」として開いて行った場合、最初の方に開いていたファイルに戻る為には辿ったスタックを一つ一つ戻る必要があり面倒に思うことがある。
そこで、「
Ctrl-W gf」とすると、開こうとするカーソル下のファイルをタブで開いてくれる。
タブ間の移動は「
gt」もしくは「
gT」で行い、閉じる場合は普段通りに「
:q」とする。
でも、開いていたファイルの左側のタブに開くのが違和感あり。感覚的に新規タブって右側でしょ?
Cコード
Cのコードの場合、プリプロセスで#includeされるヘッダー・ファイルの確認時等に使用できる。
「<>」で囲まれた標準ライブラリ関数のヘッダー・ファイルや「""」で囲まれたローカルなヘッダー・ファイルを開き定義等を確認したい場合も、カーソル下に持って行き「
gf」とすればよい。
ちなみにインクルード・ファイルの検索パス設定は以下で確認できる。
:set path?
↓
path=.,/usr/include,,
デフォルトではカレントdirと標準インクルードパスが設定されている。
従って、gccの「-I」でインクルードdirを指定してコンパイルするプログラムの場合は、この"path"に追加すれば「
gf」でオープン出来るようになる。
また、クロスコンパイルする場合も検索パスにそのコンパイラの標準インクルードパスを加えればよい。
まとめ
このように、Vimでは気になったファイルパス記述があった場合、新たな端末を開いてファイルパスをマウスでコピペして別途開くという一連の面倒な作業を軽減してくれる(一度きり操作だったら苦にはならないとは思うけど何度も繰り返してたら地獄でしょ)。
何せマウスを使う行為は一度キーボードから手を離なし再度ホーム・ポジションまで持って来なくてはならないので、どうしても遅くなってしまうものだから。。