🦁

Vimのgfについて~パス移動の救世主~

2022/06/23に公開

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独自の機能なのか気になったので、他エディタで同様の機能がないか調べてみました。

宣伝

もっとVimの機能を知りたい方や、Vimに興味を持たれた方はぜひ、Vim-jp Slackに参加してみてください。
ここでは、前述の特集記事の著者とのコミュニケーションやVimの最新情報がチェックできます。
Vimに関係のない飯テロチャンネルなどもあります(ボソッ)

https://vim-jp.org/docs/chat.html

Discussion

ログインするとコメントできます