Zsh 编辑器命令编写指南
1. 定位命令行参数
当按下回车键执行命令行时,shell 会将命令行拆分为参数传递给命令。有时,在编辑命令之前分析命令行编辑器中的参数很有用,这样即使参数是带引号的表达式,小部件也能一次性处理完整的命令参数。
使用普通的模式匹配来提取完整的参数比较困难,但 shell 可以提供帮助。变量扩展标志 (z) 可以根据 shell 的单词拆分规则将标量拆分为数组。如果将此标志应用于 BUFFER 的内容,得到的数组就类似于 shell 后续看到的命令及其参数。不过, (z) 不会去除单词中的引号,例如字符串 'one word' 在数组中会原样保留引号。这在很多情况下没问题,但要注意这不是命令实际接收的参数,实际的命令参数应该是 one word ,即一个包含空格但无引号的单个参数。如果这个单词是文件名,就需要去除引号后的表达式来检查文件。
但这里还有两个问题:
- 如何知道光标位置?
- 用户还在编辑命令行,单词可能还未完整,如何找到当前已输入的单词?
如果觉得处理这些问题很棘手,可以考虑使用补全小部件,它会处理单词拆分的细节。不过,下面给出一个函数片段,用于确定光标下的单词以及光标在该单词中的位置:
# Local variables.
# (If you put this into its own separate function, WORD and WORDPOS
# shouldn
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



