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の写真を参照してください。
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ドキュメントで私が望むものと非常に似ている追加のスペースを見つけて試してみましたが、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の写真を参照してください。
私も他の多くの設定を試しました。
よろしくお願いします。
答え1
*
に追加できます$ZLE_REMOVE_SUFFIX_CHARS
。
ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|*'
(変数が設定されていない場合は、デフォルトで使用される値に追加されます。)
したがって、挿入されたサフィックスを完成させる/
か、スペース*
選択完了後に入力すると削除されます。