Bashはどのようにテキストの完成をスキップしますか?

Bashはどのようにテキストの完成をスキップしますか?

より簡潔なバージョン

"\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-textbashのマニュアルページで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、 delete four、 write only に移動してtもう一度Tabクリックします。

する

カーソルを前に移動し、書き込みのみしてからfourクリックtしますTabCtrlkデフォルトでは最後までカーソルから削除)。

関連情報