Ich benutze Ubuntu 14.04 und ich habe ein seltsames Problem mit meinem Terminal-Bildschirm, das mich sehr nervt. Könnte mir jemand dabei helfen oder mir erklären, ob ich etwas falsch mache oder nicht unter Linux? Ich habe eine Lösung, aber ich möchte verstehen, warum dies immer wieder passiert.
Ich kopiere oft Bash-Befehle aus meinen Notizen oder aus dem Internet und manchmal bekomme ich komische 0 ~ und 1 ~ Symbole, die die von mir kopierten Dinge umschließen. Es ist sehr ärgerlich und dies geschieht auf völlig zufällige Weise.
Nach einer langen Suche fand ich heraus, dass dieses Ding als geklammerter Einfügemodus bezeichnet wird. Daher verwende ich jetzt diesen Befehl printf "\e[?2004l"
, um mein Terminal zu reparieren, wenn dieser Modus plötzlich aktiviert wurde.
Ist es möglich, diese Funktion dauerhaft zu deaktivieren? Ich habe es auf allen Ubuntu-Rechnern erlebt, auf denen ich jetzt arbeite. Früher habe ich Ubuntu 10.10 und 12.04 verwendet und ich hatte noch nie ein solches Problem.
quelle
bind
Argumente analysiert werden, die nicht erkannt werden, geschieht dies, wenn Sie diesen Befehl mit Readline vor Version 7 oder Bash vor 4.4 ausführen. Diese Antwort wird erst mit der nächsten Veröffentlichung von Ubuntu (17.04) von Nutzen sein.printf
Ansatz funktioniert, aber er funktioniert nicht, wenn er in my eingefügt wird.bashrc
, und die Funktion wird in regelmäßigen Abständen wieder aktiviert. Derbind
Ansatz bricht meine Tastatur (p
Taste funktioniert nicht, and putting that line in my
~ / .inputrc` funktioniert 10 Sekunden lang, und dann beginnt die Konsole-enaset-enaset-...
nach 10 Sekunden Verwendung für immer auszublenden . Ich habe schließlich nur manuell ein Upgrade auf Bash 4.4 von der Quelle durchgeführt, um das blöde Problem zu beheben Problembind 'set enable-bracketed-paste off'
(mit einem Leerzeichen anstelle des ersten `-``. Die Bearbeitung nur eines Zeichens scheint nicht möglich zu sein.Sie können diesen Befehl in Ihre einfügen
bashrc
. Dann wird es jedes Mal angewendet, wenn Sie Ihr Terminal öffnen.Einfach eingeben
vi ~/.bashrc
undprintf "\e[?2004l"
am Ende hinzufügen und die Datei mit speichern:wq
quelle
echo 'printf "\e[?2004l"' >> ~/.bashrc
tut dasselbe in einer Zeile, und Sie können mit überprüfentail -n1 ~/.bashrc
. Es gibt keine Notwendigkeit zu verwendenvi
.Um Ihre ursprüngliche Frage zu beantworten, warum dies passiert, ist hier ein mögliches Szenario:
Das Problem ist, mein Terminal-Programm denkt immer noch, dass das Einfügen in eckigen Klammern aktiviert ist, wenn von Shell A nach Shell B verschoben wird. Shell B unterstützt sie nicht und leitet sie unverändert weiter. Sie müssen Ihr Terminal anweisen, die eingeklammerte Paste zu deaktivieren, indem Sie Ihre Shell eine spezielle Escape-Sequenz drucken lassen
printf "\e[?2004l"
.Es gibt verschiedene Möglichkeiten, das Problem zu lösen:
Wenn Ihnen das Einfügen in eckigen Klammern überhaupt nicht wichtig ist, deaktivieren Sie es in Shell A, damit es überhaupt nicht aktiviert wird (@jwds Antwort).
Wenn Sie weiterhin in Klammern stehende Paste für Shell A verwenden möchten, diese jedoch in Shell B deaktivieren möchten, fügen Sie die Escape-Sequenz zu Ihrer
.bashrc
Antwort (@ MOHRE) hinzu.Aktualisieren Sie die Shell B, um das Einfügen in Klammern zu unterstützen, damit diese Zeichen 0 ~ und 1 ~ richtig interpretiert werden.
Randnotiz: Wenn Sie GNU-Bildschirm verwenden, müssen Sie diesen
printf
Befehl außerhalb des Bildschirms ausführen . Es scheint nicht zu funktionieren, während man drinnen ist.quelle