禁用 ZSH 中算术表达式的完成

禁用 ZSH 中算术表达式的完成

如果我输入:

echo "$((1 + 2))"

然后按Tab,ZSH 会将我输入的内容转换为:

echo 3

我怎样才能禁用这种行为?当我按下 时,我不希望 ZSH 计算算术表达式Tab

我想要扩展除算术表达式之外的所有内容。

答案1

没有您想要的具体设置,但这有效:

autoload -Uz compinit
compinit
bindkey '^I' complete-word
zstyle -e ':completion:*' completer '
  if [[ $PREFIX$SUFFIX == \$\(\(*\)\) ]]; then 
    reply=( _complete _ignored )
  else 
    reply=( _expand _complete _ignored )
  fi'

这只是告诉完成系统,当当前 shell 单词(光标所在的单词)的形式为 时$((…)),则不要使用_expand完成器。

相关内容