TAB
bashオートコンプリートが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 にルールを追加することもできます。