Vim 中進行文件目錄操作
當前文件名
我們知道Vim有48個寄存器,其中%
只讀寄存器中保存着當前文件路徑。 例如在/home/harttle/
下打開src/main.cpp
,我們打印%
的值:
:echo @% " 文件路徑 src/main.cpp
通過關鍵字展開可得到絕對路徑、所在目錄等信息:
:echo expand('%:t') " 文件名 main.cpp
:echo expand('%:p') " 絕對路徑 /home/harttle/src/main.cpp
:echo expand('%:p:h') " 所在目錄 /home/harttle/src
:echo expand('%:p:h:t') " 所在目錄名 src
:p
理解為path,:h
理解為head,:t
理解為tail。可參考:help expand
。
利用 % 進行文件操作
備份當前文件main.cpp
到main.cpp.bak
:
:w % %.bak
打開在同目錄下的main.h
:
:e %:p:h/main.h
插入當前文件名:
"%p
拷貝當前文件名到剪切板,當然你可以把它做成快捷鍵:
:let @*=expand("%:t")
直接打開目錄
Harttle發現Vim不僅可以打開文件,而且可以打開目錄。 直接vim /home/harttle
即可打開,也可以在vim打開目錄:
:e ./harttle " 編輯該目錄
:Explore . " 瀏覽該目錄
:Sexplore . " 在水平分割窗口中瀏覽該目錄
:Vexplore . " 在垂直分割窗口中瀏覽該目錄
打開目錄后Enter
進入下一層,-
返回上一層,R
重命名,D
刪除。
這里的水平分割是指上下兩個窗口,垂直分割為左右兩個窗口。 貌似TMUX和VIM對水平和垂直的定義恰恰相反,Harttle也是醉了。
萬能方法
如果你找不到合適的Vim命令,隨時都可以在Vim中直接執行Bash命令。 只需要在Ex模式中添加前導的!
字符,例如:
# 列出文件
:!ls
# 刪除文件
:!rm foo.txt
此外,NERDTree插件可以在Vim中顯示文件目錄樹。 當然也集成了文件和目錄操作,需要熟悉其快捷鍵。