我試圖刪除前導和功能尾部的空格,但它不工作:Vim的 - 消除領先,並在功能尾隨空格
function Trim(s)
echo ">>>".a:s."<<<"
let ss = substitute(a:s, '\v^\s*([^\s]+)\s*$', '\1', '')
echo ">>>".ss."<<<"
endfunction
更換\s*([^\s]+)\s*
工程確定的正則表達式*與+沒有任何區別。
測試:
: call Trim(" testing ")
輸出:
>>> testing <<<
>>> testing <<<
而且似乎如果我使用雙引號對在替代功能單引號無所謂。
問題在哪裏?如何解決?謝謝。
到目前爲止,我* *評論'\ s',tx羅曼。請注意,這個集合的解釋似乎是vim特定的?!我發現使用相同的解釋唯一的正則表達式是POSIX。 –
這很好地解釋了這個問題。如果用雙引號而非單引號括起來,我也會發現解決方案不起作用。什麼原因? (根據這裏的答案https://stackoverflow.com/questions/13435586/should-i-use-single-or-double-quotes-in-my-vimrc-file,我期望在這裏需要雙引號)。 – rnso
實際上,在文檔http://vimdoc.sourceforge.net/htmldoc/eval.html#substitute%28%29中,正在使用雙引號。 – rnso