zsh/oh-my-zsh: フォルダー以外のファイルに末尾のスペースを追加せずにタブ補完を作成するには?

zsh/oh-my-zsh: フォルダー以外のファイルに末尾のスペースを追加せずにタブ補完を作成するには?

zshとoh-my-zshがインストールされています。

デフォルトでは、zshはタブ補完を使用するときにフォルダーではなくファイルに末尾のスペースを追加します。

test_filesデモンストレーションするために、cdフォルダに次のフォルダ/ファイルを作成し、次に編集しましたtest_files

test_files
├── dir1
│   └── file4
├── dir2
│   └── file5
├── file1
├── file11
└── file111

まず、順番に押して最初のコマンドをl, s, Space, Tab, Tab, Tab, *, Enter受け取ります。ls dir2/*次に、l, s, Space, Tab, Tab, Tab, Tab, *, Enter順番に押してls file1 *2番目のコマンドを受け取ります。以下のgifの写真を参照してください。

zsh ls コマンド

2 番目のコマンドでは、「file1」はフォルダーではないため、「file1」と「*」の間にスペースが追加されます。

「file1」と「*」の間にスペースを追加したくありません。名前が「file1」で始まるファイルを削除したいときにr, m, Space, -, r, f, Space, Tab, Tab, Tab, Tab, *, Enter順番に押すとコマンドになると思いますrm -rf file1*が、コマンドは実際には時々追加されrm -rf file1 *たスペースを認識せずに「y」を押して誤ってすべてのフォルダとファイルを削除することもあります。あります。以下のgifの写真を参照してください。

zsh rm コマンド

誤って多くのフォルダやファイルを削除しました。

私は成功しなかったままスペースを削除するために数日間インターネット検索を行ってきました。

zshドキュメントで私が望むものと非常に似ている追加のスペースを見つけて試してみましたが、zstyle ':completion:*' add-space false何も変わらないようです。

私は次の行を私のコードに入れようとしましたが、.zshrcそれでもスペースが追加されます。

autoload -U compinit && compinit
zmodload -i zsh/complist
zstyle ':completion:*' menu select
zstyle ':completion:*' add-space false

を削除するとスペースは追加されませんが、タブキーを押してもカーソルがフォルダ/ファイルに移動しないため、設定をzstyle ':completion:*' menu select維持したいと思います。menu select以下のgifの写真を参照してください。

メニューを選択せず​​にzsh rmコマンド

私も他の多くの設定を試しました。

よろしくお願いします。

答え1

*に追加できます$ZLE_REMOVE_SUFFIX_CHARS

ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|*'

(変数が設定されていない場合は、デフォルトで使用される値に追加されます。)

したがって、挿入されたサフィックスを完成させる/か、スペース*選択完了後に入力すると削除されます。

関連情報