web-dev-qa-db-ja.com

zshのようなBashオートコンプリート

私はbashを使用していますが、bashが何をしているように見えるのではなく、zshスタイルのオートコンプリート(タブを押してタブに移動します)を使用したいと思います。明確にするためにもう少し。 bashでzshタイプの動作を取得するにはどうすればよいですか?

解決策を検索すると、他の質問に対する多くの回答が見つかりました。そのため、ここで簡単な回答(つまり、何に貼り付けるか.bashrc)。

(そして明らかな質問に答えるために、私はここでbashを使用する必要があります。私はチームに参加したばかりであり、彼らはbashを設定して環境を扱いやすくするためにいくつかのことを行います。おそらく同じように動作することを最終的に確認できます。 zshでの方法ですが、今のところ、bashを使用して、インタラクティブな使用中にそれをzshのように振る舞えば、より簡単です。

30

私が使う

bind 'TAB:menu-complete'

それを達成するために

23
Ciclamino

最初の完成とリストを取得するには、bashrcに以下を追加します

bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'

show-all-if-ambiguous:これは、補完関数のデフォルトの動作を変更します。 「オン」に設定した場合、複数の可能な補完がある単語は、ベルを鳴らすのではなく、一致がすぐにリストされます。デフォルト値は「オフ」です。

詳細は Bash Manual を参照してください。

編集:

これはbshをzshと同じように正確に動作させません。 Zshは次のあいまいなマッチまで完了します。 Bashはすべてのマッチを循環します。

例えば.

$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile

  • zsh:〜/ .bashまで完了し、_を追加して<tab>再び。
  • bash:すべての〜/ .ba *マッチを循環します。
26
ingkebil

ingkebil の回答をフォローアップします。bindsetinputrcに入れる人のために:

$ tail -n 4 /etc/inputrc
# zsh like completion:
# https://superuser.com/questions/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete

私は.bashrc 掃除。

2
bartekbrak