ZSHで算術式の完成を無効にする

ZSHで算術式の完成を無効にする

次のように入力すると:

echo "$((1 + 2))"

次に、を押すと、TabZSHは私が入力した内容を次のように変換します。

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'

これは、単に現在のシェル単語(カーソルがある単語)がフォーマットのときに完成者を$((…))使用しないように、完成システムに指示します。_expand

関連情報