現在編集されているファイルを基準にしたファイル名補完


7

現在ではないファイルを直接開いた場合、Vimを使用してファイル名をオートコンプリートすると、現在編集されているファイルではなく、Vimを起動した場所に関連するファイルが表示されます。

$ find .
  nice-file.xml
  xml/
      messy-file.xml
      ok-file.xml
$ vim xml/messy-file.xml

今、私が入力した場合Ctrl+ xCtrl+ f、Vimは完全なオプションとして、「素敵な-file.xml」を提供します。現在編集中のファイルと同じディレクトリにあるにもかかわらず、ok-file.xmlは提供されません。

Vimで、編集中のファイルに関連するファイル名を完成させてください。それは可能ですか?

回答:


7

:cdVimで現在のディレクトリを変更できます:

:cd xml

または、より一般的には、時々設定したい場合:

nnoremap gp :cd %:p:h<CR>

または、常に現在のファイルのディレクトリにとどまりたい場合:

set autochdir

これは一部のプラグインを壊す可能性があることに注意してください。プラグインは現在のディレクトリに依存している可能性があるため、そのまま使用できます。

autocmd BufEnter * silent! lcd %:p:h

現在のディレクトリを変更したくない場合は、現在のフォルダーを補完パスに追加することもできます。

autocmd BufRead *
  \ let s:tempPath=escape(escape(expand("%:p:h"), ' '), '\ ') |
  \ exec "set path+=".s:tempPath

2
非常に便利なgfマッピングのオーバーライドにうんざりしています。マッピングのようなものgsを使用するか、<leader>マッピングを使用することをお勧めします
Peter Rincker

プラグインがそれを処理しない場合はacd修正する必要があります。しかし、このBufEnterの回避策はもう必要ないはずです
Christian Brabandt

1
autochdirまさに私が探していたものでした。それは私のささやかなプラグインの選択とまったく競合していないようです。
Scribblemacher
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.