106.07.26 vim 前置數字v:count使用

同樣是我在寫 aben20807/my_vim/.surround.vim 遇到的
就是前置數字
功能就是
用前置數字來代表要括幾個單字
無前置就是游標所在的單字
然後就查到 v:count

所以~map就可以這樣寫
nnoremap <silent> <Plug>SurroundNadd :<C-u>execute 'call '
    \v:count? '<SID>surroundNadd(v:count)' : '<SID>surroundNadd(1)'<CR>
nmap <M-s> <Plug>SurroundNadd


解釋一下:(可以去連結看我程式碼)
1. surroundNadd(num) 的 num 代表要括幾個單字
所以當我按 3<M-s>" 的時候它就會往後用 " 括三個單字

2. v:count? '<SID>surroundNadd(v:count)' : '<SID>surroundNadd(1)'
如果沒按前置就傳1給函式代表要括一個單字,否則沒按前置v:count預設是0

然後!!!!然後!!!!
我發現 v:count 下面有一個 v:count1 !!!!
完全可以理解為啥會出現這個QuQ
這個 v:count1 主要功能跟 v:count 相同
唯一不同就是沒按前置時 v:count1 預設是1
這樣我只要改成這樣
nnoremap <silent> <Plug>SurroundNadd :<C-u>call <SID>surroundNadd(v:count)<CR>
nmap <M-s> <Plug>SurroundNadd
一整個超簡潔~~


參考資料:
Invoke a function with a count prefix
還有上面有給的documentation連結

沒有留言:

張貼留言

^ Top