我有一個函數來計算並返回一些文本的匹配數量時:VIM保持光標位置算起比賽
function! count_matches()
redir => matches_cnt
silent! %s/\[\d*\]//gn
redir END
return split(matches_cnt)[0]
endfunction
我創建了一個地圖插入count_matches的返回值()在當前位置:
noremap <C-A> Go[foo<C-R>=count_matches()<CR>]
然而光標執行無聲%S/[\ d *] // GN命令後跳轉到行的開頭。所以當我按下control + vim插入「[foo」,然後函數正在執行時,搜索命令重置光標位置,返回值被插入到行的開頭,導致「1」[foo]而不是「[foo1]」。
我可以以某種方式防止計數改變光標位置,或計數匹配後重置光標位置?
如果未找到該模式,該腳本也會導致錯誤。如何讓函數返回1而不會出現零匹配錯誤?
謝謝!另外:你碰巧知道如何防止函數輸出一個錯誤消息爲零匹配,並返回1呢? – 2014-10-30 20:38:23
我會在一分鐘內更新答案。 – 2014-10-30 20:38:59
它工作,如果我切換「」和「」並關閉最後一個括號,但是如何在不同的鍵映射中使用返回值? –
2014-10-30 21:00:38