如何在 tcsh 命令列中按單字移動?

如何在 tcsh 命令列中按單字移動?

假設指令是“ls word1 word2 word3”

我想將遊標從行尾移動到“word2”,但不想在進程中清除“word3”。只需向後跳兩個單字並到達“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

SoESCb/ f(或B/ ),這是終端通常在按+ / (+ + /表示大寫字母)F時發送的序列。AltbfAltShiftbf

這與您在emacs編輯器中執行的操作相同。

vi模式下(在 之後bindkey -v),您可以vi在 vi 指令模式下使用常用的運動指令(back、word、end 以及它們用於 WORD 運動(空格分隔的單字)的大寫等效項)。

答案2

「Alt+b」用於向後,「Alt+f」用於向前。另外,「Alt+退格鍵」應該要向後刪除一個單字。

答案3

按照 Windows 用戶的預期添加快捷方式(只需將它們放入~/.cshrc或貼上到 shell 中):

# 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

相關內容