tcsh 将光标移回上一个空间的快捷方式

hai*_*mon 4 keyboard-shortcuts tcsh line-editor

我正在寻找一个键盘快捷键tcsh来将光标移回前一个空白处:不是ESC+B它将我带回一个单词(例如,在路径参数中,到上一个路径组件)-我想回到上一个空间或当前路径的开始。

Sté*_*las 8

如果您指的是交互式bashshell提示下的键盘快捷键,您可以将shell-backward-word和绑定shell-forward-word到在某些键或按键组合上发送的某些字符序列。

就像按在您的终端上Ctrl-Left发送序列\e[1;5D一样,就像在 中一样xterm,您可以这样做:

bind '"\e[1;5D": shell-backward-word'
bind '"\e[1;5D": shell-backward-word'
Run Code Online (Sandbox Code Playgroud)

请注意,它不会从空白跳到空白,而是考虑 shell 引用。所以例如在一行中

echo "foo 'bar baz' blah/bleh bloh
^   ^              ^         ^
Run Code Online (Sandbox Code Playgroud)

它会跳到上面标记的位置。

编辑: for tcsh,您有三个选择:

  1. 使用与上述bash定义等效的in~/.cshrc或 in/etc/csh.cshrc.local来为所有用户提供好处。

    bindkey '\e[1;5D' backward-word
    bindkey '\e[1;5C' forward-word
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用vi模式(with bindkey -v)并在正常模式下使用BW键,就像在 中一样vi

  3. emacs模式(默认,重新启用bindkey -e)像 for bash,绑定相应的小部件(vi-word-backvi-word-fwd):

    bindkey '\e[1;5C' vi-word-fwd
    bindkey '\e[1;5D' vi-word-back
    
    Run Code Online (Sandbox Code Playgroud)

请注意,它们类似于vi'sBW,因此它们用于在空白分隔的单词之间跳转,而不是像bash上面的解决方案那样的 shell 标记(如带引号的字符串)。