コマンドが「ls word1 word2 word3」であるとします。
カーソルを行末で「word2」に移動したいのですが、その過程で「word3」をクリアしたくありません。 2つの単語の後ろに移動し、「word2」の先頭に移動します。
コマンドラインから単語を削除せずに単語を前後に移動できるキーボードショートカットはありますか?
答え1
tcshのラインエディタがモードに設定されている場合emacs
(これがデフォルトです。bindkey -e
以前にモードを有効にした場合はそのモードに戻るために使用しますvi
):
% 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
したがって、/(または/)は、+ /を押したときに端末が通常送信するシーケンスですESC(+ + /は大文字を表します)。bfBFAltbfAltShiftbf
これはemacs
エディタで行うのと同じことです。
vi
モード(以降bindkey -v
)では、viコマンドモードでvi
通常のアクションコマンド(b
ack、w
ord、e
nd、およびWORDアクションに対応する大文字(スペースで区切られた単語))を使用できます。
答え2
「Alt + b」は戻る、「Alt + f」は前に移動します。また、「Alt + Backspace」は1単語を後ろに削除する必要があります。
答え3
Windowsユーザーの場合は、期待どおりにショートカットを追加します(~/.cshrc
シェルにドラッグアンドドロップまたは貼り付けるだけです)。
# Use CTRL + left/right to move a word at a time:
bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word
次のように選択できる他のキーボードショートカットもあります。
# Use ALT + left/right to move a word at a time:
bindkey '^[[1;3D' backward-word
bindkey '^[[1;3C' forward-word