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.