咱們知道Vim有48個寄存器,其中%
只讀寄存器中保存着當前文件路徑。 例如在/home/harttle/
下打開src/main.cpp
,咱們打印%
的值:git
:echo @% " 文件路徑 src/main.cpp
經過關鍵字展開可獲得絕對路徑、所在目錄等信息:github
: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
。vim
備份當前文件main.cpp
到main.cpp.bak
:插件
:w % %.bak
打開在同目錄下的main.h
:code
:e %:p:h/main.h
插入當前文件名:get
"%p
拷貝當前文件名到剪切板,固然你能夠把它作成快捷鍵:it
:let @*=expand("%:t")
Harttle發現Vim不只能夠打開文件,並且能夠打開目錄。 直接vim /home/harttle
便可打開,也能夠在vim打開目錄:class
:e ./harttle " 編輯該目錄
:Explore . " 瀏覽該目錄
:Sexplore . " 在水平分割窗口中瀏覽該目錄
:Vexplore . " 在垂直分割窗口中瀏覽該目錄
打開目錄後Enter
進入下一層,-
返回上一層,R
重命名,D
刪除。方法
這裏的水平分割是指上下兩個窗口,垂直分割爲左右兩個窗口。 貌似TMUX和VIM對水平和垂直的定義偏偏相反,Harttle也是醉了。im
若是你找不到合適的Vim命令,隨時均可以在Vim中直接執行Bash命令。 只須要在Ex模式中添加前導的!
字符,例如:
# 列出文件
:!ls
# 刪除文件
:!rm foo.txt
此外,NERDTree插件能夠在Vim中顯示文件目錄樹。 固然也集成了文件和目錄操做,須要熟悉其快捷鍵。