私はYEARSのためにこれに対する解決策を見つけることを意味してきました。
この理由から、bashよりもファイルを操作するときのvimの生産性が非常に高くなります。
私が持っている場合
file_12390983421
file_12391983421
file_12340983421
file_12390986421
Bashでfile_1-> tabと入力すると、明らかに以下がリストされます。
file_12390983421 file_12391983421 file_12340983421 file_12390986421
そして、これは恐ろしい退屈であり、作業するのが苦痛です。
Vimの同じシーケンスは、一度に1つずつファイルをループします。
誰かがこれをbashで行う方法を教えてください。これを行うことができる別のシェルがあれば、明日切り替えます。
デフォルトでは、TAB
はcomplete
readlineコマンドにバインドされています。望ましい動作は、代わりにmenu-complete
になります。 ~/.inputrc
を編集して、readlinesの設定を変更できます。 TAB
を再バインドするには、次の行を追加します。
TAB: menu-complete
詳細については、man bash
のREADLINE
セクションを参照してください。
Bash> = 4の場合、これらの設定が必要になる場合があります。
# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete
# Display a list of the matching files
bind "set show-all-if-ambiguous on"
# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"
このセットアップは、Vimのset wildmode=longest:full:list,full
これらの設定は、Unix&Linuxサイトの この質問 から取得しました。
の上に
# cycle forward
Control-k: menu-complete
# cycle backward
Control-j: menu-complete-backward
あなたも追加を検討することができます
# display one column with matches
set completion-display-width 1
この方法では、現在のタブ機能を保持し、bashに1つの列に可能性を表示します。代わりに
file_12340983421 file_12390983421 file_12390986421 file_12391983421
あなたは得るだろう
file_12340983421
file_12390983421
file_12390986421
file_12391983421
追伸最新のreadline
ライブラリは、これから取得できます GNU Readline Library Webサイト。
@sthのおかげで、私にとって最適なものが見つかりました。
通常のbashタブ補完を維持し、ctl-fを使用して、menu-completeを使用して必要なときに循環させる
これを.inputrcファイルに入れます:
"\C-f": menu-complete
私の経験では、sthの答えで提供されたソリューションは、私にとって完全に機能したことはありませんでした。 TL; DR:set -o vi
を~/.bashrc
に追加します。
Viキーバインディングと組み合わせてmenu-completeを使用する場合、~/.bashrc
が以下を持っていることを確認する必要があります。
set -o vi
私の~/.inputrc
が持っているだけでは十分ではありません。
TAB: menu-complete
set editing-mode vi
set keymap vi
どうやらset editing-mode
とset keymap
がTAB: ...
設定を壊していると思いますが、なぜそうなのかを理解するためにドキュメントを詳しく調べていません。