Vim - 檔名太長怎麼辦
這是 vim 的一個小技巧,考慮以下情境:
- 我現在在
~/
目錄 - 因為某個原因我打開 vim 編輯
/usr/src/foodir/src/bardoor.c
- 看了看,發現需要參考同目錄下的
bardoor.h
,於是打入命令:tabe
- 接下來怎麼辦?因為目前工作目錄是
~/
,如果要用 vim 的 tab 補完的話還是需要把路徑再打一次 - 想一想再看答案 :)
答案是 :tabe %:r.h
利用 vim 的 filename-modifiers 可以輕鬆作到,vim 有 10 個這樣的 modifier 可以作用於 “%”,“#”,“#n”,“<cfile>”,“<sfile>”,“<afile>” 或 “<abuf>” 出現的地方:
:p | 完整路徑 |
:8 | 變成 8.3 格式 (win32 用) |
:~ | 轉換為相對於 ~/ 目錄的路徑 |
:. | 轉換成相對於 ./ 目錄 |
:h | 保留路徑頭部,相當於 dirname 指令 |
:t | 保留檔案名,相當於 basename 指令 |
:r | 保留檔案名並去除延伸檔案名 |
:e | 只留下延伸檔案名 |
:s?pat?sub? | 用 sub 取代第一個出現的 pat |
:g?pat?sub? | 同上,全部取代 |
例如,如果文件名是 “src/version.c”,當前目錄是 “/home/mool/vim”:
:p | /home/mool/vim/src/version.c |
:p:. | src/version.c |
:p:~ | ~/vim/src/version.c |
:h | src |
:p:h | /home/mool/vim/src |
:p:h:h | /home/mool/vim |
:t | version.c |
:p:t | version.c |
:r | src/version |
:p:r | /home/mool/vim/src/version |
:t:r | version |
:e | c |
:s?version?main? | src/main.c |
:s?version?main?:p | /home/mool/vim/src/main.c |
:p:gs?/?\\? | \home\mool\vim\src\version.c |