Shell 更喜欢引用而不是转义来完成ZSH

Shell 更喜欢引用而不是转义来完成ZSH,shell,zsh,quoting,Shell,Zsh,Quoting,ZSH是一个很棒的shell,所有为它编写的优秀的自动完成脚本都使它易于学习和使用 但是,我不喜欢自动完成将使用foo\bar而不是'foo-bar' 有什么方法可以改变这种行为吗?更多的是注释,但需要更好的格式,所以这里开始 我相信这在ZLE中应该是可能的,但我不知道是否已经有代码可用于此目的,而且自从我上次编程较低级别的ZLE以来已经有一段时间了,所以我没有时间刷新并自己编写代码 然而,这在已经使用stock函数的情况下是可能的。我说的是: 由于它无条件引用了单词,将tab绑定到它显然是个坏

ZSH是一个很棒的shell,所有为它编写的优秀的自动完成脚本都使它易于学习和使用

但是,我不喜欢自动完成将使用
foo\bar
而不是
'foo-bar'


有什么方法可以改变这种行为吗?

更多的是注释,但需要更好的格式,所以这里开始

我相信这在ZLE中应该是可能的,但我不知道是否已经有代码可用于此目的,而且自从我上次编程较低级别的ZLE以来已经有一段时间了,所以我没有时间刷新并自己编写代码

然而,这在已经使用stock函数的情况下是可能的。我说的是:

由于它无条件引用了单词,将tab绑定到它显然是个坏主意,但您可以绑定其他内容,比如alt tab:

autoload -Uz quote-and-complete-word
zle -N quote-and-complete-word
bindkey '^[^I' quote-and-complete-word
(或换档选项卡的
^[[Z


当您需要完成引用的内容时,请按alt tab。请注意,完成后,光标将位于引号内,您需要向右移动一个字符以保留引号,因此不幸的是,即使作为变体,它也不理想。

为什么您希望zsh修改您在命令行上已经键入的内容?这不是我直觉认为的“完成”。。还有,为什么反斜杠会伤害你?ZLE可以完全修改命令行上已经键入的内容,引用比转义更令人赏心悦目,因此这是一个可以理解的问题。是否有
引号和complete word
的变体不引用不需要引用的内容?
autoload -Uz quote-and-complete-word
zle -N quote-and-complete-word
bindkey '^[^I' quote-and-complete-word