Linux
如何使用條件編輯 vim 中的數字列?
例如,如果我有一列數字:
4 6 8 10 12
在 Vim 中有沒有一種方法可以找到所有大於 8 的數字,而不是只用這些數字進行數學運算?結果獲得一個新列:
4 6 8 (10+2)=12 (12+2)=14
\=
您可以使用特殊的替換錶達式來實現這種替換。查看:help sub-replace-special
所有詳細資訊,但以下是此特定替換的工作方式:%s/\d\+/\=str2nr(submatch(0)) > 8 ? str2nr(submatch(0)) + 2 : submatch(0)
在命令的替換部分,在,
:substitute
之後為您提供完整匹配。全域函式將其轉換為數字。\=``submatch(0)``str2nr
如果您希望邏輯更具可讀性,可以將其提取到函式中:
function! IncrementNumber(number_string) let number = str2nr(a:number_string) if number > 8 let number += 2 endif return number endfunction
你可以把它放在你的
.vimrc
, 並調整它,將門檻值設置8
為參數等,然後在文件上呼叫它:%s/\d\+/\=IncrementNumber(submatch(0))