
sagen wir, der Befehl lautet "ls word1 word2 word3"
Ich möchte den Cursor vom Zeilenende zu „Wort2“ bewegen, dabei aber „Wort3“ nicht löschen. Springe einfach zwei Wörter zurück und erreiche den Anfang von „Wort2“.
Gibt es eine Tastenkombination, um in einem Wort vor- und zurückzuspringen, ohne das Wort in der Befehlszeile zu löschen?
Antwort1
Wenn der Zeileneditor von tcsh im emacs
Modus konfiguriert ist (das ist die Standardeinstellung. Verwenden Sie , bindkey -e
um dorthin zurückzukehren, falls Sie vi
den Modus zuvor aktiviert haben):
% bindkey | grep word | egrep 'for|back'
"^[^H" -> backward-delete-word
"^[B" -> backward-word
"^[F" -> forward-word
"^[b" -> backward-word
"^[f" -> forward-word
"^[^?" -> backward-delete-word
So ESCund dann b/ f(oder B/ F). Dies sind die Sequenzen, die Terminals normalerweise senden, wenn sie Alt+ b/ drücken f( Alt+ Shift+ b/ ffür die Großbuchstaben).
Dies entspricht dem, was Sie im emacs
Editor tun würden.
Im vi
Modus (nach bindkey -v
) verwenden Sie die üblichen vi
Bewegungsbefehle im vi-Befehlsmodus ( b
ack, w
ord, e
nd und ihre Entsprechungen in Großbuchstaben für WORD-Bewegungen (durch Leerzeichen getrennte Wörter)).
Antwort2
„Alt+b“ für rückwärts und „Alt+f“ für vorwärts. Auch „Alt+Rücktaste“ sollte ein Wort rückwärts löschen.
Antwort3
Hinzufügen der Verknüpfungen wie von einem Windows-Benutzer erwartet (geben Sie diese einfach in Ihre ~/.cshrc
Shell ein oder fügen Sie sie ein):
# Use CTRL + left/right to move a word at a time:
bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word
Es besteht auch die Möglichkeit, hierfür andere Tastaturkürzel zu verwenden, zum Beispiel:
# Use ALT + left/right to move a word at a time:
bindkey '^[[1;3D' backward-word
bindkey '^[[1;3C' forward-word