
私の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-paste
control-DEL
方法で解析またはmeta-q
解析します。 Readlineは、マイナス記号で区切られた最後の部分を取り、それをキー名として理解しようとし、残りの部分を取り、修飾子シーケンスとして理解しようとします。
キーを識別するコードキー名テーブルに一致する名前がない場合は、喜んで最初の文字だけを見ることに戻ります。したがって、キーをpaste
表すために使用されます。p
修飾子のコードを探す文字列に他の非修飾子があるかどうかは問題ではなく、修飾子がマイナス記号で終わることを期待しません。したがって、set-enable-bracketed-
単に修飾子がないものとして扱われます。
p
これはキーを「バインド解除」しません。それについて-キーをp
「」という関数にバインドしますoff
。 これを行うコードoff
関数テーブルに""という関数がない場合、エラーは発生しません。メインメニューそのような機能はありません。