LoginSignup
sprout2000
@sprout2000

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

zshでファイル名を補完した後に挿入されたスペースが消えてしまう

解決したいこと

zshでファイル名が補完されたあとに、自動挿入されたスペースが消失してしまう場合があるのが地味に気になります。
これをbashと同じ挙動に戻すような設定方法があればご教授ください。

発生している問題・エラー

_ はカーソル位置を表しています。

bashの場合

bash
$ rm yarn_  <-- ここでタブを入力
$ rm yarn.lock _  <-- ファイル名の後にスペースが挿入される
$ rm yarn.lock && ls_ <-- カーソル位置から次のコマンドが入力できる

zshの場合

zsh
% rm yarn_
% rm yarn.lock _  <-- ここまではbashと同じ
% rm yarn.lock&&_ <-- スペースが消失し、前のコマンドにくっついてしまう

コマンドを実行する上でとくに障害があるわけではないですが、何か気持ち悪いです。

手元の環境

zsh
% uname -a
Darwin mba2020 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:27 PDT 2021; root:xnu-7195.141.2~5/RELEASE_ARM64_T8101 arm64

% brew info zsh-completions     
zsh-completions: stable 0.33.0 (bottled), HEAD
$HOME/.zshrc
if type brew &>/dev/null; then
  FPATH=$(brew --prefix)/share/zsh-completions:$FPATH

  autoload -Uz compinit
  compinit
fi

もしご存知の方がいらしたらお教えください。
よろしくお願いいたします。

0

3Answer

.zshrc に

ZLE_REMOVE_SUFFIX_CHARS=

と書けば無効にできます。

ZLE_REMOVE_SUFFIX_CHARS 環境変数はスペースを消す挙動を制御します。これにセットした文字種を入力すると、補完で入力された直前のスペースなどが消えます。何もセットしなければ ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|' と同じ意味です。空文字列をセットすれば無効になります。

参考:

1
This answer has been deleted for violation of our Terms of Service.

Your answer might help someone💌