如何在 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

相关内容