Vim ohne Esc

Die Esc‑Taste ist klein und ungünstig positioniert – für Vi/Vim‑Nutzer ein Problem, denn Esc
wechselt in den Normal‑Modus.
Schon bei klassischen Tastaturen ist der Weg zu Esc lang – und historisch nicht vorgesehen: Als
Bill Joy den vi schrieb, nutzte er ein ADM‑3A. Die Pfeile waren auf HJKL aufgedruckt
und Esc saß dort, wo heute Tab ist.
Es gibt mehrere Alternativen zur Esc‑Taste. Fünf davon:
Ctrl-[
Im Vim entspricht Ctrl-[ exakt Esc. Es sind zwar zwei Tasten, aber ergonomischer und ohne
Konfiguration nutzbar. Siehe :help i_CTRL-[.
Ctrl-c
Ctrl-c beendet den Insert‑Modus und geht in den Normal‑Modus. Nicht identisch zu Esc, praktisch
aber ähnlich. Siehe :help i_CTRL-C.
Alt/Meta
In vielen Terminals entspricht Alt+Taste „Esc gefolgt von Taste“. Praktische Beispiele:
Alt+hjkl: BewegungAlt+o: Neue Zeile unterhalbAlt+A: Append ans ZeilenendeAlt+p: Einfügen an aktueller Position
Mappings in der .vimrc
Beliebte Mappings für Esc sind z. B.:
imap ;; <Esc>
imap jk <Esc>
imap ii <Esc>
Nachteil: Wenn du ;;, jk oder ii wirklich tippen musst.
Esc mit Caps Lock tauschen
Meine Lieblingsvariante, benötigt aber System‑Konfiguration, da Caps Lock eine Mod‑Taste ist.
setxkbmap
Einfachste Lösung – tauscht Caps Lock und Esc:
setxkbmap -option caps:swapescape
In .xinitrc eintragen. Ich setze außerdem das gesamte Tastaturlayout damit:
setxkbmap -model pc105 -layout gb -variant intl -option caps:swapescape
Xmodmap
Wenn du Caps Lock behalten, aber zusätzlich Esc haben willst:
In
~/.Xmodmap:remove Lock = Caps_Lock keysym Caps_Lock = EscapeIn
.xinitrcladen:xmodmap ~/.XmodmapKleines Umschalt‑Skript:
#!/bin/sh case $1 in off) xmodmap -e "clear lock" xmodmap -e "keycode 0x42 = Escape" ;; on) xmodmap -e "keycode 0x42 = Caps_Lock" xmodmap -e "add lock = Caps_Lock" ;; *) echo "Uso: caps {on|off}, liga e desliga o Caps Lock" echo "Quando desligado, ele funciona como a tecla Esc" ;; esac
Terminal
Alle obigen Lösungen gelten nur unter X. Für die TTYs:
julio@julio-acer ~> (echo `dumpkeys | grep -i keymaps`; echo keycode 58 = Escape; echo keycode 1 = Caps_Lock) | sudo loadkeys -
Alias in ~/.zshrc:
alias nocaps='(echo `dumpkeys | grep -i keymaps`; echo keycode 58 = Escape; echo keycode 1 = Caps_Lock) | sudo loadkeys -'
Aktualisierung
Heute (2022) nutze ich die ideale Lösung: ein frei belegbares Keyboard. Ich habe ein
Moonlander Mark I und mappe Caps Lock auf die Taste links vom A.
Keine Software‑Änderungen nötig.
Links

Ich bin ein brasilianischer Computeringenieur mit Wohnsitz in Deutschland und begeistere mich für Technik, Wissenschaft, Fotografie und Sprachen.
Ich programmiere seit etwa zwei Jahrzehnten und habe dabei alles von mobilen Apps und Webentwicklung bis hin zu Machine Learning erkundet. Derzeit fokussiere ich mich auf Cloud‑SRE und Data Engineering.
Ich engagiere mich ehrenamtlich in den Open‑Source- und Python‑Communities, helfe bei der Organisation der PyCon DE und PyData Berlin, betreue als Mentor und trage mit Code und Übersetzungen bei.
In meinem Blog teile ich Linux‑Tipps, Einrichtungsanleitungen und persönliche Notizen, die ich als spätere Referenz geschrieben habe. Ich hoffe, dass sie auch anderen nützlich sind. Die Inhalte sind in mehreren Sprachen verfügbar.
Schau dir meine Galerie an, um einige meiner Fotografien zu sehen.
Abseits der Tastatur findest du mich auf Konzerten, beim Klarinettenspiel, Radfahren, Tauchen oder beim Erkunden neuer Orte, Kulturen und Küchen.
Ich freue mich immer über den Austausch! 🙂