Vim maskiert Nicht-ASCII-Werte zum Einfügen

Vim maskiert Nicht-ASCII-Werte zum Einfügen

Ich versuche, eine Zeichenfolge aus einem Register in VIM einzufügen, die Nicht-ASCII-Zeichen wie enthält Ctrlr. Wie kann ich diese Zeichenfolge in eine Datei einfügen, aber die Nicht-ASCII-Zeichen automatisch maskieren?

Im Wesentlichen versuche ich, ein Makro aufzuzeichnen, das einige (nicht-ASCII-)Zeichen enthält, wie CtrlWes beispielsweise von vim als ^W angezeigt wird. Ich möchte das Makro (indem ich die Register untersuche und die Makrozeichenfolge (z. B. @a=^W) nehme) als Tastenzuordnung in eine .vimrc-Datei kopiere, sodass dieses Makro ausgeführt wird, wenn ich die Taste drücke.

Ich möchte dies automatisch (oder so schnell wie möglich) tun, ohne ^W in CtrlWder .vimrc-Datei oder wo auch immer ich es einfüge, ändern zu müssen.

Antwort1

Erstens,Steuersequenzen liegen im ASCII-Bereich( ^Wist Codepunkt 23), aber sie sind sog.nicht druckbarZeichen. Sie können diese unverändert in Ihre ~/.vimrcDatei einfügen (solange Sie Vim-Register verwenden und nicht die Terminalauswahl und das Einfügen);kein Entkommen nötig. ( Je nach Dateiformat Ihres können möglicherweise nur mit ^Jund Probleme auftreten .)^M~/.vimrc

Dennoch gibt es hier eine einfache Ersetzung, mit der Sie diese Steuersequenzen umgehen können:

:echo substitute("example: \<C-A>\<C-Z>", '[\x00-\x1f]', '\="<C-" . nr2char(char2nr(submatch(0)) + 64) . ">"', 'g')

verwandte Informationen