Vimのgfについて~パス移動の救世主~
Software Design7月号でVimが特集されました。その中でgf
という機能が紹介されていました。
筆者は3年ほどVimを触っていますが知らなかったので調べてみました。
gfとは?
まずはVimのヘルプにはどう書いてあるかを確認してみます。
gf E446 E447
[count]gf カーソルの下か後ろの名前のファイルを編集する。
vim-helpより引用
実際の動作は以下のようになります。
a.txt
内のテキスト./b.txt
をVimが解析し、b.txt
にジャンプしました。
gfと似た機能
gf
に似た機能として
gF
<C-w>f
があります。
gF
gF
[count]gF
"gf" と同じだが、ファイル名の後に番号があるとき、その行へカーソルが移動する点が異なる。
vim-helpより引用
基本的な動作はgf
と同じですが、gF
の場合:5
をVimが解析し、b.txt
の5行目にジャンプしました。
ユースケースとしては、エラーログを確認しているとき等かなと思います。
<C-w>f
CTRL-W f CTRL-W_f CTRL-W_CTRL-F
CTRL-W CTRL-F カレントウィンドウを2つに分割する。カーソル位置のファイル名を編集する。
":split ]f" と同様だが、ファイルが存在しなければウィンドウを分割しない。
vim-helpより引用
gFの問題点とgf-user
gF
には一つだけ重大な問題があります。それはWindowsだと正常に動作しないことです。
Vimのisfname
オプションにはWindows限定で:
が設定されています。
これはWindows独特のドライブレターによるものです。
そしてこの問題を解決するためのプラグインも存在します。
詳しくは以下の記事で解説してくださっているので興味のある方はご覧ください。
gf-user で gf の動作を拡張する
機能比較
キー | 特徴 |
---|---|
gf | テキストを解析し、現在バッファで開く |
gF | gf + 特定の行にカーソル移動 |
<C-w>f | gf + 新規バッファで開く |
余談
gfはVim独自の機能なのか気になったので、他エディタで同様の機能がないか調べてみました。
- emacs : find-file-at-point
- VSCode : Open file
宣伝
もっとVimの機能を知りたい方や、Vimに興味を持たれた方はぜひ、Vim-jp Slackに参加してみてください。
ここでは、前述の特集記事の著者とのコミュニケーションやVimの最新情報がチェックできます。
Vimに関係のない飯テロチャンネルなどもあります(ボソッ)
Discussion