題 相對於當前文件的Vim文件名完成


VIM,當我處於插入模式,並且我想使用文件名完成時,我希望搜索路徑相對於當前文件,而不是當前工作目錄。例如,如果在插入模式下,我鍵入以下內容:

./^ X^ F

完成菜單顯示我的文件 :pwd,但我寧願看到文件 %:p:h 上市。

有沒有我可以設置解決此問題的選項,如果不是,您建議什麼作為解決方法?


4
2018-06-05 17:16


起源




答案:


如果你

:set autochdir

你會得到你想要的行為。但是,如果您需要保留工作目錄(例如,輕鬆打開其他項目文件),則必須使用autocmds保存/恢復CWD:

:autocmd InsertEnter * let save_cwd = getcwd() | set autochdir
:autocmd InsertLeave * set noautochdir | execute 'cd' fnameescape(save_cwd)

11
2018-06-05 19:21



謝謝! autochdir 很棒 C-X, C-F但是當我在項目中處於4級深度並且我想要時,這很煩人 :tabe - Mark K Cowan


@Ingo Karkat回答 很好,但我有點猶豫不決 我的vimrc因為即使是 幫助頁面 'autochdir' 請注意它的用法會破壞一些插件。

我提出了自己的解決方案,這可能對我的用例非常有用:

inoremap ./<C-X> <C-F>  <C-O>:LCD  %:P:H<CR><C-X> <C-F>

我計劃在發出lcs命令之前將其提取到函數中並為pwd設置變量,然後在某個時間點重置它。如果有一個菜單autocmd會很好。

我可能會也可能不會使用它,但我想我會拋棄另一種解決方案。


2
2018-06-06 13:27