[英]subfunctions in vim
我在menu.vim中創建了很多功能。
我注意到在許多函數中使用了相同的代碼,這就是為什么我決定使用子函數來清理文件的原因。
pe這是我的函數中經常返回的代碼:
let zoek = @/
if a:type == "'<,'>"
let r = substitute(zoek, '\\%V', '', 'g')
elseif a:type == "%"
let r = zoek
endif
let a = substitute(r, '\', '', 'g')
if matchstr(d, '>') == '>' || matchstr(d, '<') == '<'
let e = substitute(d, '\zs>\(\d\+\)%<\ze', '\1-', 'g')
endif
如何從中創建子功能? 如何調用?
Vim有子功能嗎?
您可以在字典中定義«local»函數:在以下代碼中
function MyFunc()
let d={}
function d.function()
echo "Foo"
endfunction
call d.function()
endfunction
函數d.function
僅可在s:MyFunc內部訪問,並在s:MyFunc退出后銷毀。 我將«local»用引號引起來,因為d.function
是名為42
全局函數(或其他數字,沒關系)。 沒有引用就不能調用它,創建引用的唯一方法是使用function dict.key()
(引用可以在創建后復制,但是您不能使用對function()
調用來創建引用MyFunc
: function("MyFunc")
)是可能的。 請注意,每次創建函數時,數字(在這種情況下為42)都會遞增,並且我既不知道最大數量是多少,也不知道達到最大數量時將發生什么。 我個人使用字典功能是因為它們還有兩個優點:
Vimscript中只有一種類型的函數,但是我不確定這是否是您正在menu.vim中使用的函數。 因此定義了用戶定義的函數:
function! MyNewFunction()
" your code here
endfunction
然后,您可以使用以下命令在腳本的其他位置(以及其他函數內部)調用此函數:
call MyNewFunction()
或使用設置等於您的函數返回值的變量
let my_variable = MyNewFunction()
當然,這是一個非常簡單的概述,因為您說您已經在使用函數。 更多信息,包括變量的使用,在這里:
help user-functions
抱歉,如果我沒有回答您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.