我已经习惯在大括号内使用制表符自动完成功能,而无需在 zsh 中扩展。当我使用带有基本 grml 配置的 zsh 时,这是可能的。由于我迁移到 oh-my-zsh,我无法重现此行为。
例子:
$ touch dir/{some_file,other_f<TAB>}
我想要的行为:
$ touch dir/{some_file,other_file}
我得到的行为:
$ touch dir/some_file dir/other_f
每当我为任何文件名按下 Tab 键时,选项卡都会扩展大括号,而不是自动完成,从而破坏了大括号扩展的目的。
我在联机帮助页和 zsh 站点中搜索了任何相关的答案,但找不到任何令人满意的内容。由于我对 zsh 还很陌生,所以我不确定到底要寻找什么。
如果您能指出在哪里可以找到与此问题相关的任何解释,我将不胜感激。预先感谢您提供任何有用的意见!
答案1
正如托尔在他的书中指出的那样评论,大括号中的自动完成功能仅起作用,直到您放置右大括号。
所以:
touch dir/{some_file,other_f<TAB>
(没有结束括号!)自动完成文件名,所以你得到touch dir/{some_file,other_file
touch dir/{some_file,other_f<TAB>}
(用右大括号!)首先展开大括号,所以你得到touch dir/some_file dir/other_f