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モード ( の後)では、 vi コマンド モードの通常の移動コマンド ( ack、ord、nd、および WORD 移動 (空白で区切られた単語) の場合はそれらの大文字の同等物)bindkey -vを使用します。vibwe

答え2

「Alt+b」で後方に、「Alt+f」で前方に移動します。また、「Alt+backspace」で後方の単語を削除します。

答え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

関連情報