私はUbuntu 14.04を使用していますが、端末画面に奇妙な問題があり、それが多くのバグを引き起こしています。誰かがそれを手伝ってくれたり、何か間違っているかLinux以外の方法をやっている場合は説明してもらえますか?何らかの解決策がありますが、なぜこれが何度も起こるのかを理解したいと思います。
ノートやインターネットからbashコマンドをコピーすることがよくあり、コピーしたものをラップする奇妙な0〜および1〜のシンボルが表示されることがあります。これは非常に迷惑であり、これは完全にランダムに発生します。
長い検索の後、このことは 分割貼り付けモード と呼ばれることがわかりました。このコマンドprintf "\e[?2004l"
を使用して、このモードが突然有効になった場合に端末を修正します。
この機能を何らかの方法で永久に無効にすることは可能ですか?私は今働いているすべてのUbuntuマシンでそれに直面しました。以前は、Ubuntu 10.10および12.04を使用していましたが、このような問題は一度もありませんでした。
ブラケット貼り付けモードを無効にできます。
Bashで一時的に試すには:
bind 'set enable-bracketed-paste off'
次に、その動作が好きな場合は、~/.inputrc
に設定を置くか、/etc/inputrc
(またはUbuntuのどこでも)でシステム全体に設定を置くことができます。
そのコマンドをbashrc
に入れることができます。その後、ターミナルを開くたびに適用されます。
vi ~/.bashrc
と入力し、最後にprintf "\e[?2004l"
を追加して、:wq
でファイルを保存します
whyこれが発生するという元の質問に答えるために、考えられるシナリオを次に示します。
問題は、私のターミナルプログラムは、シェルAからシェルBにスッシグするときにブラケットペーストが有効であるとまだ考えているため、貼り付けられたコンテンツ(0〜および1〜ビット)の周りに文字を追加し続けることです。シェルBはそれらをサポートしていないため、変更せずにそのまま渡します。シェルに特別なエスケープシーケンスを出力させることで、ブラケットペーストをオフにするよう端末に指示する必要があります-これはprintf "\e[?2004l"
が行うことです。
この問題を解決する方法はいくつかあります。
ブラケットペーストをまったく気にしない場合は、シェルAでオフにして、そもそも有効にしないようにします(@jwdの答え)
シェルAでブラケットペーストを使用し続け、シェルBでは無効にする場合は、.bashrc
(@MOHREの回答)にエスケープシーケンスを追加します。
ブラケットペーストをサポートするようにシェルBをアップグレードして、これらの0〜および1〜文字を適切に解釈します。
補足:GNU画面を使用している場合、画面の外でprintf
コマンドを実行する必要があります。内部では機能しないようです。