Kopiuj-wklej w xfce4-terminal dodaje 0 ~ i 1 ~


105

Używam Xubuntu 14.04, 64-bit. Od czasu do czasu, kiedy próbuję wkleić jakiś tekst do xfce4-terminal, zamiast oczekiwanego tekstu do wklejenia, jest on otoczony 0~i 1~, na przykład:

0~mvn clean install1~

Tekst powinien być mvn clean install- zweryfikowałem to, wklejając treść w różnych innych aplikacjach (gnome-terminal, gedit i inne). Każda aplikacja poprawnie wkleja treść, z wyjątkiem xfce4-terminal. Nie mogłem znaleźć żadnych odnośników w Internecie (niestety trudno jest szukać tekstu ze znakami specjalnymi na google.com ...). Dlaczego to się dzieje?


Jak się wklejasz? Środkowe kliknięcie czy coś innego?
Celada,

1
Wypróbowałem każdą metodę: środkowe kliknięcie, kliknięcie prawym przyciskiem i wybranie opcji wklej, ctrl + shift + v. Kiedy pojawiają się znaki 0 ​​~ i 1 ~, nie ma znaczenia, której metody wklejania używam.
botismarius

Odpowiedzi:


144

Problem polega na tym, że twój terminal jest w trybie wklejania w nawiasach, ale wydaje się, że nie obsługuje go poprawnie. Problem został rozwiązany w VTE, ale xfce4-terminal nadal używa starej i nieobsługiwanej wersji.

Możesz spróbować tymczasowo wyłączyć tryb wklejania w nawiasach, używając:

printf "\e[?2004l"

4
Jeśli nie zawsze możesz go odtworzyć, być może uruchomiłeś jakiś program, który włączył tryb wklejania w nawiasach, a następnie zawiesił się, więc nie mógł go wyłączyć przed wyjściem.
Kyrias

4
Wielkie dzieki! Walczę z tym problemem od ponad roku. Czy można całkowicie wyłączyć ten „tryb wklejania w nawiasach”? BTW, kto wdraża takie szalone rzeczy? ;)
Adam Romanek

4
to zależy od twojego terminala. Jest to naprawdę przydatna funkcja, ponieważ pozwala aplikacjom wiedzieć, czy coś zostało wpisane, czy wklejone. Po pierwsze, weechat, program IRC, używa go, aby zapytać, czy chcesz wysłać pasty wielowierszowe, co nie byłoby możliwe bez trybu wklejania w nawiasach, ponieważ wtedy nie byłoby sposobu, aby dowiedzieć się, czy użytkownik wpisał linie lub nie.
Kyrias

1
Jak mogę sprawdzić, który program nie działa w trybie wklejania w nawiasach?
aviggiano

3
W przypadku dystrybucji opartych na Ubuntu możesz spróbować zainstalować poprawioną wersję pakietu „vte” z launchpad.net/~adrozdoff/+archive/ubuntu/vte
Denis Bakharev

78

Mój problem był spowodowany źle zamkniętą sesją bash. Uruchomienie polecenia resetw moim terminalu natychmiast go rozwiązało.


2
To zadziałało dla mnie.
AFP_555

I zadziałało dla mnie!
tomd

Zdarzyło się z Ubuntu 16.04, używając terminatora. reset działał!
user1270710,

Mój terminator robił to samo, również z Ubuntu 16.04. Uruchomiony resetna moim ssh naprawił.
Marcello Grechi Lins

23

Miałem ten sam problem, pojawia się po użyciu vi.

Mój problem został rozwiązany przez dodanie set t_BE= do mojego .vimrcpliku.

Dla porównania , to właśnie robi t_BE:

t_BE włącza tryb wklejania w nawiasach


7
To była dokładnie przyczyna, dzięki! W moim przypadku zaczęło się, gdy zaktualizowałem do VIM 8
rgerganov

1
czy mógłbyś wyjaśnić, jaki zestaw t_BE = robi i dlaczego rozwiązuje problem?
Francesco Boccardo

7

To zachowanie występuje, gdy emulator terminala utknie w trybie wklejania w nawiasach kwadratowych .

Zwykle dzieje się tak, gdy aplikacja jest nieczytelnie zamykana (ulega awarii lub jest błędna).

Innym powodem tego zjawiska często występuje to błąd w starszych wersjach VTE (VTE jest terminal widget emulacja pod gnome-terminala xfce4-terminali wiele innych), które są wywoływane przez pewne działania w niektórych narzędzi, takich jak przełączanie paneli w Commandera .

Aby sprawdzić, czy ten błąd został naprawiony w emulatorze terminali opartym na VTE: Uruchom echo -ne '\e[>c', spowoduje to wstawienie kilku znaków, tak jakby je wpisałeś. Jeśli środkowa liczba jest 3602większa, wspomniany stary błąd VTE nie jest już dla ciebie obecny. Jeśli liczba jest mniejsza, VTE nadal występuje i utknie w trybie wklejania w nawiasach częściej niż powinno.

Aby sprawdzić, czy określony emulator terminala jest naprawiony w pewnej dystrybucji Ubuntu, sprawdź jego zależności od packages.ubuntu.com . libvte-2.91-0jest dobry. libvte-2.90-9jest dobry tylko wtedy, gdy rzeczywista wersja tego pakietu to 0.36.2 lub nowsza i libvte9jest zła. W szczególności xfce4-terminaljest wadliwy w Xenial i naprawiony w Zesty.


1

Może to nie dotyczyć bezpośrednio twojego problemu, ale znalazłem ten objaw prawdopodobnie w moim przypadku spowodowany przez mojego wybranego przez siebie redaktora „mcedit” (Midnight Commander)

Aby złagodzić problem z błędem, dodałem następującą funkcję do mojego pliku .bashrc:

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

Następnie „source .bashrc”

Teraz za każdym razem, gdy uruchamiam „mcedit”, automatycznie dodaje „printf” \ e [? 2004l ”po zamknięciu, aby zresetować„ Bracketed Paste Mode ”

Działa dla mnie, YMMV.

To samo podejście można zastosować w przypadku vi, vim, nano lub dowolnego innego niewłaściwie działającego programu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.