Warum startet das Mapping <ESC> der Befehlszeile Vim im Replace-Modus?

2

Ich hatte ein Problem, bei dem das Starten von Vim über die Befehlszeile im Ersetzungsmodus begann. Ich habe es schließlich in meiner Konfig auf diese Zeile eingegrenzt:

nnoremap <ESC>         :noh<return><ESC>

Wenn ich den Schlüssel auf etwas anderes ändere nnoremap <space><space><space> (Nur um zu testen… ich würde es niemals so lassen.) Ich sehe das Verhalten nicht. Wenn ich MacVim anstelle der Befehlszeile Vim verwende, sehe ich es auch nicht. Ich benutze iTerm 2 mit xterm-256color terminal und zsh als mein Shell-Typ, da scheint es relevant zu sein.

Hat jemand eine Idee, worauf ich achten sollte, um dies zu beheben? Die Antwort ist natürlich willkommen, aber wenn Sie auch mitteilen können, wo ich über dieses Problem nachdenken sollte, könnte es mir helfen, in Zukunft ähnliche Probleme zu beheben.

Vielen Dank!

jxpx777
quelle

Antworten:

1

Die vom Terminal verwendeten ANSI-Escape-Sequenzen beginnen alle mit Escape ( ^[ ), und da Vim diese zur Kommunikation mit dem Terminal verwendet, wird es beim Kartieren verwirrt <Esc>. Deshalb gibt es auch in MacVim (und GVIM) keine Probleme. Diese verwenden das Terminal nicht und haben unterschiedliche E / A-Kanäle.

Kartierung <Esc> In Terminal Vim sucht nur Ärger; Bitte wählen Sie einfach einen anderen Schlüssel.

Ingo Karkat
quelle