いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

vimでアクティブファイルのディレクトリを使って別のファイルを開く (%:h)

f:id:gsf_zero1:20211217140202g:plain

以前の記事

vimでカーソル位置の単語をコマンド行に挿入 - いろいろ備忘録日記

現場でvim慣れていない人が知っておくと便利なTips - いろいろ備忘録日記

vim の3種類のビジュアルモード (v, V, Ctrl-v) - いろいろ備忘録日記

vim のビジュアルモードで使える o コマンド(端点移動) - いろいろ備忘録日記

vimで関数の中身を全部削除するコマンド (Inner Block, di{, ci{, vi{ ) - いろいろ備忘録日記

プログラミング時に便利なvimの選択モーション (i{, i(, i[, i", it) - いろいろ備忘録日記

プログラミング時に便利なvimのビジュアルモードコマンド (I, A, X, c) - いろいろ備忘録日記

vimのコマンドラインモードで一気に編集する (vim, command line mode, range) - いろいろ備忘録日記

vimでファイルの最後から始める (option, +) - いろいろ備忘録日記

概要

よく忘れるのでここにメモメモ。。。知っているとちょっと楽できます。

今開いているファイル(アクティブファイル)のディレクトリから相対的にパスを指定して別のファイルを開きたいときがあります。

例えば、今 /workspace/try-golang がカレントディレクトリな状態で、examples/basic/stacktrace/debug_stack.go ってファイルを開いたとします。

gitpod /workspace/try-golang (master) $ pwd
/workspace/try-golang

gitpod /workspace/try-golang (master) $ vim examples/basic/stacktrace/debug_stack.go

この状態でもろもろ作業をしていて、参考用に同じディレクトリにある別のファイル (runtime_stack.go)を開きたいとします。

カレントディレクトリは /workspace/try-golang のままなので、そのままだと examples/basic/stacktrace/runtime_stack.go って入れないといけませんが、以下のようにすると今開いているファイルのディレクトリを一気に補完することが出来ます。

:edit %:h<tab>

%:h の後にタブを打つと、ディレクトリが補完されます。

ちなみに、% 自体がアクティブバッファのファイルパスを表します。それに対して :h ってすると、ベースパスを表すようになります。

なので、カレントディレクトリを今開いているファイルの場所にしたい場合は

:cd %:h

ってすれば一発で出来ます。

参考情報


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。