Readlineの設定ファイルパーサにはエラーチェック機能がいくつかありません。

Readlineの設定ファイルパーサにはエラーチェック機能がいくつかありません。

私のUbuntu 16.04システムのBash / Readlineバージョンが角かっこ貼り付けモードをサポートしているか(サポートしていない)かを調べていないので、この記事で好奇心が強いように次のコマンドを実行しました。Ubuntuの回答を尋ねる

bind 'set-enable-bracketed-paste off'

設定が存在しない場合は、構文エラーについて文句を言うか何もしないでset-enable-bracketed-pasteください。bind代わりに小文字のバインディングを解除しますp。つまり、入力すると文字がブラックホールに消えます。

bindこのコマンドを使用すると、最初の空白文字(文字列にスペースがある場合)の直前の最後のハイフンの後の文字が区切られているように見えます。たとえば、次のコマンドを実行しました。

これによりr文字バインディングが解除されます。

bind '__-r anymorecharacters'

これにより文字バインディングが解除されます2

bind 'xxxx-1-2xxx'

文字の前にCtrl- を入力して文字を入力できるため、再バインドできます。V

bind 'r: self-insert'
bind '2: self-insert'

私にとって、これは予想外の驚くべき行動であり、バグだと思います。しかし、私はReadlineについてよく知らないので、この動作の合理的な説明があるかどうかここに尋ねたいと思いました。

ベストアンサー1

Readlineの設定ファイルパーサにはエラーチェック機能がいくつかありません。

set-enable-bracketed-pastecontrol-DEL方法で解析またはmeta-q解析します。 Readlineは、マイナス記号で区切られた最後の部分を取り、それをキー名として理解しようとし、残りの部分を取り、修飾子シーケンスとして理解しようとします。

キーを識別するコードキー名テーブルに一致する名前がない場合は、喜んで最初の文字だけを見ることに戻ります。したがって、キーをpaste表すために使用されます。p

修飾子のコードを探す文字列に他の非修飾子があるかどうかは問題ではなく、修飾子がマイナス記号で終わることを期待しません。したがって、set-enable-bracketed-単に修飾子がないものとして扱われます。

pこれはキーを「バインド解除」しません。それについて-キーをp「」という関数にバインドしますoffこれを行うコードoff関数テーブルに""という関数がない場合、エラーは発生しません。メインメニューそのような機能はありません。

おすすめ記事