在 zsh 中反向滚动命令的最后一个参数?

在 zsh 中反向滚动命令的最后一个参数?

当我想在 zsh 中查看命令的最后一个参数时,我只需按 Alt+。但是,有时我按得太频繁,我更愿意向后滚动,就像我在 fish 中使用键盘快捷键 Alt+Up 和 Alt+Down 一样。我该如何在 zsh 中做到这一点?

答案1

# Create a function.
insert-next-word() { 
  # Tell `insert-last-word` to go forward (1), instead of backward (-1).
  zle insert-last-word -- 1 
}

# Create a widget that calls the function above.
zle -N insert-next-word

# Bind this widget to a keyboard shortcut.
bindkey '^[,' insert-next-word

现在,在您按下alt.一次或多次之后,您可以按下alt,以反方向循环。

文档:http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#index-insert_002dlast_002dword

如果需要,您可以将这些命令绑定altalt

# alt-↑
bindkey '^[^[OA' insert-last-word \
        '^[^[[A' insert-last-word

# alt-↓
bindkey '^[^[OB' insert-next-word \
        '^[^[[B' insert-next-word

在上面的键代码中,倒数第二个字符应该是O[取决于您如何设置终端,但绑定两者并没有坏处。

如果上述两个版本的代码都不适合您,请按ctrlV,然后按您想要使用的按键组合,以查看您的终端实际输出的按键代码。


更新

现已提供更全面的解决方案作为我的插件 Zsh Edit 的一部分在自述文件中,此键绑定的名称为“重复单词 <方向>”。

相关内容