より簡潔なバージョン
"\t": menu-complete
~/.inputrc
これら2つのファイルを作成した後、
$ touch one.two.txt
$ touch one.four.txt
次の内容の作成を開始します。
$ ls one
ヒットすれTabば得るだろう
$ ls one.four.txt
カーソルを before four
、 delete four
、 write only に移動してt
もう一度Tabクリックします。あなたは得るでしょう
$ ls one.two.txt.txt
.txt
このワークフローで重複を防ぐ方法はありますか?
元の質問
私は押すときにmenu-complete
繰り返すbash機能を使用するのにTab満足しています。しかし、次のような状況が私に頻繁に発生します。
longparthardtoremember.with.QQQQQQQ.extension
このファイルを含むディレクトリでファイルを探しているとします。
longparthardtoremember.with.AAAAAAA.nice.long.extension
longparthardtoremember.with.BBBBBBB.very.nice.long.extension
...
Tab完了すると、$ long
最初のファイル名が挿入されます。この時、ファイル名の途中に移動してそのAAAAAAA
部分を削除し、 と入力してB
からTab再度 -complete をしたいと思います。これにより、後のすべての部分BBBBBBB
も挿入され、重複が発生するため、明らかに望ましくありません。
編集モードではvi
この問題を非常に迅速に処理できますが(複製されたセクションにすばやく移動して削除します)、それはまだ面倒です。
偶然skip-completed-text
bashのマニュアルページでbashオプションが見つかりました。これは私に必要なものではありませんか?設定しましたが、on
ジョブ完了動作に違いはありませんTab。私はマンページを間違って理解したのでしょうか?
答え1
skip-completed-text
次のように動作します(例を使用touch one.four.txt
)。
$ ls one.four
# ^ cursor is on the f
Tabキーを押すとskip-completed-text on
完了です。
$ ls one.four.txt
Tabキーを押すとskip-completed-text off
完了です。
$ ls one.four.txtour
したがって、この設定は、完成の間で編集するときに実際には役に立ちません。
答え2
変える
カーソルを before
four
、 deletefour
、 write only に移動してt
もう一度Tabクリックします。
する
カーソルを前に移動し、書き込みのみしてからfour
クリックt
しますTab(Ctrlkデフォルトでは最後までカーソルから削除)。