我已經知道如何退出Vim,現在我想知道是否有可能在按gf
時強制Vim在當前目錄中搜索'/somedir/file.js',就好像它是'./somedir/file.js'?使VIM考慮當前文件夾的根
UPD:有question如何設置一般路徑,但它不會幫助/myfolder/
指向某個我想要的文件夾。 /myfolder/
始終是當前音量根的絕對路徑。
我已經知道如何退出Vim,現在我想知道是否有可能在按gf
時強制Vim在當前目錄中搜索'/somedir/file.js',就好像它是'./somedir/file.js'?使VIM考慮當前文件夾的根
UPD:有question如何設置一般路徑,但它不會幫助/myfolder/
指向某個我想要的文件夾。 /myfolder/
始終是當前音量根的絕對路徑。
Vim計數以/
開頭的文件名始終爲文件系統根目錄,因爲您觀察到的文件名爲 。如果不是這樣的話,如果'isf'
( 控制什麼是文件名的選項)接受了正則表達式,這將是更容易解決的 。但是,如果您從'isf'
中刪除/
,則不再將斜槓 視爲文件名的一部分。
我能想到的唯一解決方案是使用可視模式 gf
。您可能知道,如果您有視覺選擇的文字並使用gf
那麼視覺選擇將被考慮,而不是'isf'
匹配。然後,我們需要做的就是直觀地選擇 光標下的文件名稱,但不包括可能的前導/
。這可以通過地圖來解決,如果 你不介意搞亂你以前的搜索:
nnoremap <silent> gf :let @/ = substitute(expand('<cfile>'), '^/', '', '')
\ <bar>normal gngf<cr>
這將覆蓋gf
設置下光標 (expand()
)搜索到的文件名,如果減去任何斜線(substitute()
)然後運行 選擇匹配的正常命令gn
,最後運行 原始gf
。
如果你想保存你以前的搜索和恢復,你可以很容易地創建一個函數來包裝這一切。請注意,我也寫了這兩條線,只是因爲我是一個長線的公開敵人。但是,如果你只是想要測試它 刪除\
並寫入一行。
現在您的gf
將解釋爲/file
爲file
。因此,如果你在 正確的目錄,這將工作。如果您需要在不同的 目錄中進行搜索,則需要的選項是'path'
或'pa'
對於 短。您可以提供要搜索的目錄列表。很像Unix shell的$PATH
。被逗號隔開。從幫助(請務必閱讀 歇歇吧,有:h 'pa
):
這是將使用
gf
,[f
,]f
,^Wf
,:find
,:sfind
,:tabfind
時搜索的目錄列表和其他 命令,前提是正在搜索的文件具有相對路徑(不以「/」,「./」或「../」開頭)。 '路徑'選項中的目錄可能是相對的或絕對的。
總之,在你的項目中使用此,設置您的'path'
如果需要 如你所願並啓用此地圖。或者在 :autocmd
或類似的東西中自動運行。您並沒有像最初建議的那樣更改 項目的根目錄,但您有一種模擬 ,其中包括'path'
中的所需目錄,然後強制gf
至 忽略前導/
。
真棒回答!謝謝,像魅力一樣工作! –
快樂,它工作@AlexDolgov!如果您認爲問題已解決,請不要忘記接受正確答案;) – sidyll
也許這有助於http://stackoverflow.com/questions/2288756/how-to-set-working-current-directory-in-vim –
只需刪除第一個'/'? –
還有另外一個建議:在根目錄下創建符號鏈接:)但是,嚴格來說,問題是如何讓VIM考慮'/'不是卷的根目錄,而是項目的根目錄(或其他某個文件夾)。在開始時刪除斜線會破壞項目。 –