一些实用的 Zsh 键绑定
内容提要
该文章介绍了提高命令行编辑效率的Zsh小部件和键绑定,包括撤销和重做、历史扩展、缓冲区管理、单词移动、删除和复制、接受命令行、粘贴文本处理、修正命令、清屏等功能。推荐了与Zsh集成的工具fzf和xplr。
延伸解读
撤销重做:被忽视的编辑功能
许多 Zsh 用户不知道撤销和重做小部件,因为它们默认没有绑定在 viins 键映射中。作者将它们分别绑定到 Ctrl+Z 和 Ctrl+Y,从而在命令行编辑时提供类似文本编辑器的撤销重做能力,提升编辑效率。
单词移动:更精细的导航与删除
Zsh 内置的单词移动和删除在默认 WORDCHARS 设置下会移动或删除过多内容,即使清空 WORDCHARS 也无法处理标点簇和驼峰子词。作者提供的 qc-word-widgets 函数实现了子词和 shell 词的移动与删除,并给出了具体的键绑定示例,如 Ctrl+左/右、Alt+左/右 等。
粘贴与清屏:实用小部件改进
粘贴文本时,三击选择会包含换行符,导致终端粘贴出现多余空行。作者通过覆盖 bracketed-paste 小部件,修剪粘贴文本的尾部空白。清屏方面,内置的 clear-screen 会清除滚动历史,而作者的小部件在清屏的同时保留滚动回看,并允许自定义提示符位置。
命令修正与工具集成
作者推荐使用 thefuck 来智能修正上一条命令,并绑定到 Esc Esc,比 oh-my-zsh 的 sudo 插件更强大,能处理如 echo 重定向等无法简单加 sudo 的情况。此外,fzf 和 xplr 等工具可与 Zsh 集成,提供模糊查找、历史命令选择和文件导航等便捷功能。
Q&A
Zsh中如何绑定撤销和重做功能?
可以将撤销功能绑定到[Ctrl+Z],将重做功能绑定到[Ctrl+Y]。
历史扩展功能在Zsh中是如何工作的?
历史扩展功能将! -1转换为上一个命令,通常绑定到[Space]键。
Zsh中如何处理粘贴文本的尾部空格?
可以使用一个小部件来修剪粘贴文本的尾部空格,确保粘贴时不会带入多余的空格。
Zsh的缓冲区管理功能有什么用?
缓冲区管理允许将当前缓冲区推送到缓冲区栈并清空缓冲区,方便后续编辑。
fzf和xplr在Zsh中有什么作用?
fzf是一个模糊查找工具,提供历史命令选择;xplr是一个TUI文件浏览器,便于导航。
如何在Zsh中清屏而不清除历史记录?
可以使用自定义的清屏小部件,按[Ctrl+L]清屏但保留滚动历史。