Wie @muru im Kommentar erwähnt hat , könnten Sie eine (in :help /[[) beschriebene Äquivalenzklasse verwenden , die ein Zeichenklassenausdruck zu sein scheint, der als eine Menge ähnlicher Zeichen ausgewertet wird (dh dieselben sind, wenn Sie Akzente / diakritische Zeichen entfernen).
Um beispielsweise nach kočičkaund kocickamit demselben Muster zu suchen , können Sie Folgendes verwenden:
ko[[=c=]]i[[=c=]]ka
wo [[=c=]]ist die Äquivalenzklasse für den cCharakter.
Um diese Zeichenklasse automatisch einzufügen, wenn Sie cwährend einer Suche auf drücken, können Sie die folgende Zuordnung verwenden:
cnoremap <expr> c getcmdtype() =~ '[?/]' ? '[[=c=]]' : 'c'
was sich so aufschlüsseln lässt:
<expr> Geben Sie die Auswertung eines Ausdrucks ein
getcmdtype() =~ '[?/]' Testen Sie, ob Sie eine Rückwärts- oder eine Vorwärtssuche durchführen
'[[=c=]]'Gibt die Äquivalenzklasse für den cCharakter zurück, wenn der vorherige Test erfolgreich war
'c'Liefert das cZeichen ansonsten zurück
Die vorherige Zuordnung weist zwei Nachteile auf:
- es deckt nur den
cCharakter ab
- Dies kann das Lesen des Musters erschweren
Es könnte durch Remapping <CR>wie folgt verbessert werden :
cnoremap <CR> <C-\>e getcmdtype() =~ '[?/]' ? substitute(getcmdline(), '\a', '[[=\0=]]', 'g'): getcmdline()<CR><CR>
Wenn Sie <CR>nach dem Schreiben eines Musters für eine Suche auf drücken, ersetzt die Zuordnung automatisch alle alphabetischen Zeichen durch das Gegenstück zur Äquivalenzklasse.
Das Mapping für <CR>ähnelt dem vorherigen Mapping für c, verwendet jedoch nicht das Argument, <expr>sondern das System-Mapping <C-\>e.
<expr>Ermöglicht das Einfügen der Auswertung eines Ausdrucks, während <C-\>eSie die gesamte Befehlszeile durch die Auswertung eines Ausdrucks ersetzen können.
:h [[=und:h patterns-composing.