tcshコマンドラインから単語ごとに移動するには?

tcshコマンドラインから単語ごとに移動するには?

コマンドが「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通常のアクションコマンド(back、word、end、および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

関連情報