In vim sind Strg-links und Strg-rechts durch Leerzeichen getrennte Wörter vorwärts und rückwärts (also Synonyme für B und W), dasselbe gilt für Web-Textbereiche und bash
.
Beim Ausführen von funktionieren diese Tasten jedoch screen
nicht mehr. Wenn sie gedrückt werden, wechselt vim stattdessen zur Befehlszeile und gibt dort 5C
oder ein 5D
.
Hier ist die Kodierung, die ich für diese Schlüssel habe:
$ cat >/dev/null # pressing control-left, then control-right:
^[[1;5C^[[1;5D
Übrigens: Ich habe versucht, diese Tasten in neu zuzuordnen .screenrc
, und zwar wie folgt:
bindkey ^[[1;5D stuff B
bindkey ^[[1;5C stuff W
Dies funktioniert für vim, aber jetzt funktionieren diese Tasten nicht in der bash
Befehlszeile (stattdessen wird nur B
oder ausgegeben W
).
Ich vermute, das ist ein termcap
Mysterium, das ich nie verstanden habe ... danke für jede Aufklärung!
Antwort1
Es gibt mehrere Möglichkeiten, dies zu beheben. Eine Möglichkeit besteht darin, den Wert von $TERM zu notieren, bevor Sie screen starten (wahrscheinlich xterm), und dann, nachdem Sie vim innerhalb von screen gestartet haben, die Option „term“ auf diesen Wert zu setzen. Beispiel:
:set term=xterm
Eine andere Möglichkeit besteht darin, Zuordnungen für diese Zeichenfolgen zu definieren:
:map <esc>[1;5D <C-Left>
:map <esc>[1;5C <C-Right>
Sie können jede dieser Lösungen in Ihrer ~/.vimrc unter der Bedingung ausführen, dass Sie screen verwenden, und zwar wie folgt:
if &term == "screen"
map <esc>[1;5D <C-Left>
map <esc>[1;5C <C-Right>
endif
Antwort2
Mein .vimrc
in Ubuntu, um Strg-Pfeiltasten zu handhaben
map <Esc>[1;5A <C-Up>
map <Esc>[1;5B <C-Down>
map <Esc>[1;5D <C-Left>
map <Esc>[1;5C <C-Right>
cmap <Esc>[1;5A <C-Up>
cmap <Esc>[1;5B <C-Down>
cmap <Esc>[1;5D <C-Left>
cmap <Esc>[1;5C <C-Right>
map <Esc>[1;2D <S-Left>
map <Esc>[1;2C <S-Right>
cmap <Esc>[1;2D <S-Left>
cmap <Esc>[1;2C <S-Right>