当我想在 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
如果需要,您可以将这些命令绑定alt↑到alt↓:
# alt-↑
bindkey '^[^[OA' insert-last-word \
'^[^[[A' insert-last-word
# alt-↓
bindkey '^[^[OB' insert-next-word \
'^[^[[B' insert-next-word
在上面的键代码中,倒数第二个字符应该是O
或[
取决于您如何设置终端,但绑定两者并没有坏处。
如果上述两个版本的代码都不适合您,请按ctrlV,然后按您想要使用的按键组合,以查看您的终端实际输出的按键代码。
更新
现已提供更全面的解决方案作为我的插件 Zsh Edit 的一部分在自述文件中,此键绑定的名称为“重复单词 <方向>”。