Kopieren-Einfügen in xfce4-terminal fügt 0 ~ und 1 ~ hinzu

105

Ich benutze xubuntu 14.04, 64 bit. Wenn ich ab und zu versuche, Text in xfce4-terminal einzufügen, wird er anstelle des erwarteten einzufügenden Texts von 0~und umgeben 1~, z. B . :

0~mvn clean install1~

Der Text sollte lauten mvn clean install- ich habe dies überprüft, indem ich den Inhalt in verschiedene andere Anwendungen (Gnome-Terminal, Gedit und andere) eingefügt habe. Jede Anwendung fügt den Inhalt korrekt ein, mit Ausnahme von xfce4-terminal. Ich konnte im Internet keine Referenzen dafür finden (leider ist es schwierig, auf google.com nach Text mit Sonderzeichen zu suchen ...). Warum passiert das?

botismarius
quelle
Wie klebst du? Mittelklick oder was anderes?
Celada
1
Ich habe jede Methode ausprobiert: Mittelklick, Rechtsklick und Option Einfügen, Strg + Umschalt + V. Wenn die Zeichen 0 ~ und 1 ~ angezeigt werden, spielt es keine Rolle, welche Einfügemethode ich verwende.
Botismarius

Antworten:

144

Das Problem ist, dass sich Ihr Terminal im Einfügemodus in Klammern befindet, dies jedoch anscheinend nicht ordnungsgemäß unterstützt. Das Problem wurde in VTE behoben, aber xfce4-terminal verwendet immer noch eine alte und nicht gepflegte Version davon.

Sie können versuchen, den Modus für das Einfügen in eckigen Klammern vorübergehend zu deaktivieren, indem Sie Folgendes verwenden:

printf "\e[?2004l"
kyrias
quelle
4
Wenn Sie es nicht immer reproduzieren können, ist es möglich, dass Sie ein Programm ausgeführt haben, das den Einfügemodus in Klammern aktiviert hat, und dann abgestürzt ist. Daher konnte es nicht deaktiviert werden, bevor das Programm beendet wurde.
kyrias
4
Super, danke! Ich habe seit mehr als einem Jahr mit diesem Problem zu kämpfen. Ist es möglich, diesen "Einfügemodus in Klammern" vollständig zu deaktivieren? Übrigens, wer setzt so verrückte Dinge um? ;)
Adam Romanek
4
Das hängt von Ihrem Terminal ab. Und es ist eine sehr nützliche Funktion, da Anwendungen wissen, ob etwas eingegeben oder eingefügt wurde. Zum einen fragt weechat, ein IRC-Programm, ob Sie mehrzeilige Pasten senden möchten, was ohne den Einfügemodus in eckigen Klammern nicht möglich ist, da es dann keine Möglichkeit gibt, zu wissen, ob der Benutzer die Zeilen oder Buchstaben eingegeben hat nicht.
kyrias
1
Wie kann ich herausfinden, welches Programm mit dem Einfügemodus in Klammern in Konflikt gerät?
Aviggiano
3
Für auf Ubuntu basierende Distributionen können Sie versuchen, die gepatchte Version des 'vte'-Pakets von launchpad.net/~adrozdoff/+archive/ubuntu/vte
Denis Bakharev,
78

Mein Problem war auf eine schlecht abgeschlossene Bash-Sitzung zurückzuführen. Ein laufender Befehl resetin meinem Terminal löste das Problem sofort.

petobens
quelle
2
Das hat bei mir funktioniert.
AFP_555,
Und es hat bei mir funktioniert!
22.
Passiert mit Ubuntu 16.04 mit Terminator. Reset funktioniert!
user1270710
Mein Terminator tat dasselbe und führte auch Ubuntu 16.04 aus. Laufen resetauf meiner SSH-Verbindung behoben.
Marcello Grechi Lins
23

Ich hatte das gleiche Problem, es tritt auf, nachdem ich vi benutze.

Meins wurde durch Hinzufügen set t_BE= zu meiner .vimrcDatei behoben .

Als Referenz ist dies, was t_BE tut:

t_BE Aktiviert den Einfügemodus in Klammern

ivan
quelle
7
Das war genau der Grund, danke! In meinem Fall hat es angefangen, als ich
Uhr
1
Könnten Sie bitte erklären, was set t_BE = bewirkt und warum es das Problem löst?
Francesco Boccardo
7

Dieses Verhalten tritt auf, wenn der Terminalemulator im Einfügemodus in eckigen Klammern hängt .

Dies passiert normalerweise, wenn eine Anwendung unsauber beendet wird (abstürzt oder fehlerhaft ist).

Ein weiterer Grund für das Phänomen auftritt , ist häufig ein Fehler in älteren Versionen von VTE (VTE ist der Terminal - Emulation - Widget unter gnome-terminalund xfce4-terminalund viele mehr) , die durch bestimmte Aktionen in bestimmten Dienstprogramme wie ausgelöst Makeln die Platten in Midnight Commander .

So überprüfen Sie, ob dieser Fehler in dem von Ihnen ausgeführten VTE-basierten Terminalemulator behoben ist: Bei der Ausführung echo -ne '\e[>c'werden einige Zeichen eingefügt , als ob Sie sie eingegeben hätten. Wenn die mittlere Zahl 3602oder größer ist, ist der oben genannte alte VTE-Fehler für Sie nicht mehr vorhanden. Wenn die Zahl kleiner ist, ist VTE immer noch betroffen und bleibt häufiger als erwartet im Einfügemodus in eckigen Klammern hängen.

Überprüfen Sie die Abhängigkeiten eines bestimmten Terminalemulators in einer bestimmten Ubuntu-Distribution auf packages.ubuntu.com . libvte-2.91-0ist gut. libvte-2.90-9ist nur dann gut, wenn die aktuelle Version dieses Pakets 0.36.2 oder neuer ist und libvte9schlecht. Insbesondere xfce4-terminalist in Xenial fehlerhaft und in Zesty behoben.

egmont
quelle
1

Dies trifft möglicherweise nicht direkt auf Ihr Problem zu, aber ich habe festgestellt, dass dieses Symptom in meinem Fall wahrscheinlich von meinem bevorzugten Editor 'mcedit' (Midnight Commander) verursacht wurde.

Um das Fehlerproblem zu beheben, habe ich meiner .bashrc-Datei die folgende Funktion hinzugefügt:

### vvv 'function mcedit' is a fix-up for the ~0/~1 paste problem
function mcedit() { command mcedit $@ ; printf '\e[?2004l' ; }

Dann 'source .bashrc'

Jedes Mal, wenn ich 'mcedit' ausführe, fügt es automatisch das 'printf "\ e [? 2004l" "hinzu, wenn ich schließe, um den" Bracketed Paste Mode "zurückzusetzen.

Funktioniert bei mir, YMMV.

Der gleiche Ansatz kann mit vi, vim, nano oder jedem anderen Programm angewendet werden, das sich schlecht verhält.

user83536
quelle