Vim Script 實現一個自己的function
Vim有許多功能強大的插件,可以定製化實現很多出色的功能,一直嚮往能自己開發一個適合自己的插件,可惜能力和精力都有限。今日偶的閒來試試吧!
Vim自帶的Help裏面就有如何寫Vim腳本的說明:
vim +help
代開help。查找script
如果對Vim script 有興趣可以仔細研究,不贅述。
經過一番研究大概明白了基本的語法和函數的寫法,自建了一個一直想實現的功能:
"by louyong:open file with same suffix;
:function Search_OpenTypeFiles(suffix)
:let filename=expand("<cword>")
:let java_filename=filename . "." . a:suffix
:let $REALPATH=findfile(java_filename, "**")
:if empty($REALPATH)
:echo "Can not find " . java_filename
:else
:find $REALPATH
:call search(filename)
:endif
:endfunction
map <silent>,ff :call Search_OpenTypeFiles(expand("%:e"))<CR>
將這個方法寫入到你的 .vimrc文件,之後在代碼裏可以實現,在光標處點擊“,ff”可以跳轉到光標所在處的詞同名的文件。
如:光標在App這裏,你的當前文件是index.js, 你點擊“,ff”就會跳轉到App.js.
說明一下“,ff”是自定義的快捷鍵,逗號是我的先導按鍵
let mapleader = “,”
簡單記錄說明下,免得自己以後忘記自己寫的代碼是什麼意思,😂
"by louyong:open file with same suffix;
這是註釋的寫法,引號開頭,略
:function Search_OpenTypeFiles(suffix)
…
:endfunction
function是函數定義關鍵字和:endfunction匹配,Search_OpenTypeFiles是函數名,小括號裏是參數
:let filename=expand("")
…
:find $REALPATH
:call search(filename)
…
let定義變量filename 通過 expand("")
- cword表示當前光標所在詞。
- expand是vim內建函數。
- empty也是內建函數,判斷是否存在
- search也是內建函數,在全文查找關鍵字。
- find是內建命令,可以直接查找並打開文件。
參考:https://blog.csdn.net/lengye7/article/details/79348035
感謝🙏!作者
此方法只在mac下驗證,不保證linux/windows可用。