Bashタブオートコンプリート可能なすべてのファイルで、「begins with」ではなく「contains」と一致するようにします。

Bashタブオートコンプリート可能なすべてのファイルで、「begins with」ではなく「contains」と一致するようにします。

TABbashオートコンプリートがoh-my-zshのように機能したいです。

大文字と小文字を無視し、各タブですべて繰り返す機能を追加しました。

名前付きディレクトリにフォルダがあり、それをLinuxCommands作成するとComm+TABフォルダと一致しませんLinuxCommands

filename contains keywords""の現在の動作の代わりに""に基づいてfilename starts with keywords入力されたキーワードとフォルダとファイル名と一致するようにbashの動作を変更する方法はありますか?

私はこれがすべてbashなので重要ではないと思います。しかし、私は知らないので、MacOS Sierraを使用しています。

アップデート1

現在、私のコードにはこの~/.bashrc修正があります。

    _cd_completion() {
        mapfile -t COMPREPLY < <(ls -d */ | grep "${COMP_WORDS[COMP_CWORD]}")
    }
    complete -F _cd_completion cd

    # If ~./inputrc doesn't exist yet, first include the original /etc/inputrc so we don't override it
    if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
    # Add option to ~/.inputrc to enable case-insensitive tab completion
    bind 'set completion-ignore-case On'

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

一人で仕事を終えるのです。しかし、全体的なパフォーマンスは奇妙です。オートコンプリートされた後、オートコンプリート後にディレクトリより1レベル下の同じフォルダの内容を繰り返します。

例:Folder1、Something2、およびNewFolder3がある場合は、を押すとがcd F+TAB表示され> cd Folder1/、もう一度押すとTAB表示され> cd Folder1/Something2、次に表示される場合は> cd Folder1/NewFolder3親フォルダを繰り返し続けます。

ベストアンサー1

~/.bashrc ファイルに次のコードを追加して、独自のbash_completionルールを追加できます。

_cd_completion() {
    mapfile -t COMPREPLY < <(ls -d */ | grep "${COMP_WORDS[COMP_CWORD]}")
}
complete -F _cd_completion cd

次に、端末を再起動するか、次のコマンドを入力する必要があります。source ~/.bashrc

システム全体で使用できるようにするには、/usr/share/bash-completion/completions/cd ファイル内の bash_completion にルールを追加することもできます。

おすすめ記事