Benutzer in englischer Sprache haben diese Probleme wahrscheinlich nicht, aber vim ist ziemlich dumm, wenn es um reguläre Ausdrücke geht. In meinem Fall scheinen die meisten Buchstaben des türkischen Alphabets außerhalb des EN-Alphabets nicht als Wortzeichen zu gelten.
Angesichts eines Dokuments, das ein türkisches Wort enthält:
gerçekleşiyor
Der Suchausdruck
/ger\wek
… Stimmt nicht mit dem Wortanfang überein. Aus irgendeinem Grund ist ç kein Wortzeichen.
Dies wird ärgerlich, wenn Plugins \w
als Teil ihres regulären Ausdrucksrepertoires verwendet werden. Ein typisches Beispiel ist neocompcache
(was ich anstelle von neocomplete
weil es mit Neovim kompatibel ist). Mit zusätzlichen übereinstimmenden Regelsätzen für einige Sprachsyntaxen erfolgt die automatische Vervollständigung nur in wortgroßen Blöcken. Wenn ich große Mengen türkischer Prosa schreibe, wäre es praktisch, eine funktionale automatische Vervollständigung zu haben, aber da die meisten Wörter in kleinere Teile zerlegt werden und die türkischen Zeichen weggelassen werden, ist dies mehr als nutzlos.
Wie kann ich vim (vorzugsweise neovim, wenn es darauf ankommt) davon überzeugen, einen größeren Bereich von Zeichen als "Wort" -Zeichen zu akzeptieren?
utf-8
auf der ganzen Linie . Und ja, es ist in beiden Einstellungen eingestellt.Antworten:
\w
ist ausdrücklich kurz für[0-9A-Za-z_]
. Verwenden Sie\k
stattdessen, wenn Sie Unicode-Zeichen außerhalb dieses Bereichs abgleichen möchten. Zum Beispiel/ger\kek
Übereinstimmungengerçekleşiyor
.By the way, ist neocomplete sich dessen bewusst , aber absichtlich nicht nicht verwenden
\k
(Standardeinstellung) wegen Leistungsbedenken. Sie können dieg:neocomplete#keyword_patterns
Einstellung von neocomplete ändern . Siehe auch:https://github.com/Shougo/neocomplete.vim/issues/207
quelle
Es gibt anscheinend keine einfache Möglichkeit, sie neu zu definieren
\w
. Siehe zum Beispiel, dass Vim-Regex-Übereinstimmungen mit Unicode-Zeichen als Nicht-Wort und Übereinstimmungswort mit Zeichen jenseits von a-zA-Z sind .Möglicherweise können Sie jedoch einen benutzerdefinierten Bereich verwenden, wenn Sie nichts dagegen haben, ihn regelmäßig erneut einzugeben (ha) :
[a-zA-Z\%u00c7-\%u015f]
. Das passt leider auch zu vielen nicht-türkischen Zeichen, aber wenn diese Zeichen nicht in Ihrem Text erscheinen, ist das möglicherweise in Ordnung.quelle
\w
und daher fallen sie alle aus, wenn es darum geht. Anstatt jeden einzelnen zu patchen (wenn ich die Schuldigen überhaupt ausfindig machen kann), wäre es für mich einfacher, vim zu patchen, damit es\w
funktioniert. Bah.