Ich versuche, führende und nachfolgende Leerzeichen in einer Funktion zu entfernen, aber es funktioniert nicht:Vim - Entfernen von führenden und abschließenden Leerzeichen in einer Funktion
function Trim(s)
echo ">>>".a:s."<<<"
let ss = substitute(a:s, '\v^\s*([^\s]+)\s*$', '\1', '')
echo ">>>".ss."<<<"
endfunction
Die Regex \s*([^\s]+)\s*
auf https://regex101.com/
Ersetzen funktioniert ok * mit + macht keinen Unterschied.
Testing:
: call Trim(" testing ")
Ausgang:
>>> testing <<<
>>> testing <<<
Auch scheint es egal, ob ich doppelte Anführungszeichen im Vergleich zu einfachen Anführungszeichen in Ersatzfunktion verwenden.
Wo sind die Probleme und wie können sie gelöst werden? Vielen Dank.
Bisher für meinen * buggy * Kommentar zu' \ s', tx Romain. Beachten Sie, dass diese Interpretation einer Sammlung vim specific zu sein scheint ?! Die einzige Regex-Variante, die ich mit der gleichen Interpretation finde, ist POSIX. –
Das erklärt das Problem sehr gut. Ich sehe auch, dass die Lösung nicht funktioniert, wenn sie in Anführungszeichen statt in einfache Anführungszeichen eingeschlossen ist. Was ist der Grund? (Laut Antwort hier https://stackoverflow.com/questions/13435586/should-i-use-single-o-double-quotes-in-my-vimrc-file, erwartete ich hier doppelte Anführungszeichen). – rnso
Tatsächlich werden in der Dokumentation http://vimdoc.sourceforge.net/htmldoc/eval.html#substitute%28%29 doppelte Anführungszeichen verwendet. – rnso