Wenn Sie in bash / readline durch einen Befehl navigieren möchten, haben Sie häufig Dinge wie:
cat /home/foo/bar.txt /home/bar/baz.txt
Wenn sich mein Cursor am Ende der Zeile befindet (^ e) und ich zum Anfang des zweiten Arguments zurückkehren möchte, wie gehe ich zum (nächsten / vorherigen) Leerzeichen über?
Readline verfügt über integrierte Funktionen Meta-f
(vorwärts) und Meta-b
(rückwärts). Diese werden jedoch an den Schrägstrichen in den Pfaden angehalten und nicht bis zum Leerzeichen verschoben.
vim hat W
und B
wird dies tun, aber der Bewegungsmodus von vim ist in readline / bash standardmäßig nicht aktiviert.
vi
, warum nicht in denvi
Modus wechseln (und dort bleiben) ?Antworten:
Sie können VIM-Bewegungsbefehle in readline / bash verwenden, auch wenn Sie sich noch im Bewegungsmodus von Emacs befinden. Die relevanten Readline-Befehle sind
vi-fWord
undvi-bWord
. Sie können sie an Tastaturkürzel binden, wieCTRL-f
undCTRL-b
mit den folgenden in Ihrem.bash_profile
:Beachten Sie, dass das doppelte Anführungszeichen von Bedeutung ist.
Sie können bestätigen, dass die Bindungen funktionieren, indem Sie ausführen
bind -p
quelle
bind \cb backward-bigword
undbind \cf forward-bigword
zu Ihrem~\.config\config.fish
Es gibt Readline-Befehle, mit denen Sie Wörter so verschieben und behandeln können, wie die Shell sie zum Teilen behandelt:
shell-forward-word
undshell-backward-word
1 .Wenn Sie binden wollen , dass sie Ctrl+ Meta+ fund Ctrl+ Meta+ bzu vermeiden , die bestehenden Bindungen zu überschreiben, können Sie
in der Befehlszeile, oder fügen Sie hinzu
in die entsprechende
inputrc
Datei (in der Regel~/.inputrc
).Je nach Einstellung von
convert-meta
,\M-
muss mit ersetzt werden\e
.1 Eingeführt in Bash 4.0.
quelle