Copy-Paste в xfce4-терминал добавляет 0 ~ и 1 ~

105

Я использую xubuntu 14.04, 64 бит. Время от времени, когда я пытаюсь вставить какой-то текст в xfce4-терминал, вместо ожидаемого текста, который нужно вставить, он окружается символами 0~и 1~, например:

0~mvn clean install1~

Предполагается, что текст mvn clean install- я проверял это, вставляя содержимое в другие приложения (gnome-терминал, gedit и другие). Каждое приложение правильно вставляет содержимое, кроме xfce4-терминала. Я не смог найти ссылки на это в интернете (к сожалению, сложно найти текст со специальными символами на google.com ...). Почему это происходит?

botismarius
источник
Как ты вклеиваешь? Средний щелчок или что-то еще?
Селада
1
Я попробовал каждый метод: средний щелчок, щелчок правой кнопкой мыши и выбрал вариант вставки, Ctrl + Shift + V. Когда появляются символы 0 ~ и 1 ~, не имеет значения, какой метод вставки я использую.
botismarius

Ответы:

144

Проблема в том, что ваш терминал находится в режиме вставки в скобках, но, похоже, не поддерживает его должным образом. Проблема была исправлена ​​в VTE, но xfce4-терминал все еще использует старую и не поддерживаемую версию.

Вы можете временно отключить режим вставки в скобках, используя:

printf "\e[?2004l"
kyrias
источник
4
Если вы не всегда можете воспроизвести его, возможно, вы работали с какой-то программой, которая включала режим вставки в скобках, а затем она зависала, поэтому не смогла отключить ее перед выходом.
kyrias
4
Круто, спасибо! Я боролся с этой проблемой больше года. Можно ли полностью отключить этот «режим вставки в скобках»? Кстати, кто реализует такие сумасшедшие вещи? ;)
Адам Романек
4
это зависит от вашего терминала. И это действительно полезная функция, поскольку она позволяет приложениям узнать, был ли что-то введено или вставлено. Например, IRC-программа weechat использует ее, чтобы узнать, хотите ли вы отправлять многострочные вставки, чего нельзя было бы сделать без режима вставки в скобках, поскольку тогда не было бы никакой возможности узнать, набрал ли пользователь строки или не.
Кириас
1
Как узнать, какая программа работает с режимом вставки в скобках?
aviggiano
3
Для дистрибутивов, основанных на Ubuntu, вы можете попробовать установить исправленную версию пакета 'vte' с launchpad.net/~adrozdoff/+archive/ubuntu/vte
Денис Бахарев
78

Моя проблема была из-за плохо закрытой сессии bash. Так что запущенная команда resetв моем терминале решила это немедленно.

petobens
источник
2
Это сработало для меня.
AFP_555
И это сработало для меня!
января
Произошло с Ubuntu 16.04, используя терминатор. перезагрузка сработала!
user1270710
Мой терминатор делал то же самое, также работал Ubuntu 16.04. Запуск resetна моем ssh-соединении исправил это.
Марчелло Гречи Линс
23

У меня была такая же проблема, она возникает после того, как я использую vi.

Мой был решен путем добавления set t_BE= в мой .vimrcфайл.

Для справки , это то, что делает t_BE:

t_BE включить режим вставки в скобках

иван
источник
7
Именно это и было причиной, спасибо! В моем случае это началось, когда я
обновился
1
Не могли бы вы объяснить, что делает set t_BE = и почему это решает проблему?
Франческо Боккардо
7

Это происходит, когда эмулятор терминала застревает в режиме вставки в скобках .

Обычно это происходит, когда приложение выходит из системы нечисто (вылетает или глючит).

Другой причиной этого явления , чтобы произойти часто является ошибка в старых версиях ВТЭ (ВТЭ является эмуляция терминала виджет под gnome-terminalи xfce4-terminalи многое другое), срабатывающий при определенных действий в определенных коммунальных услуг , таких как переключая панели в Midnight Commander .

Чтобы увидеть, исправлена ​​ли эта ошибка в эмуляторе терминала на основе VTE: Выполните echo -ne '\e[>c', это вставит несколько символов, как будто вы их напечатали. Если среднее число больше 3602или больше, вышеупомянутая старая ошибка VTE больше не присутствует для вас. Если число меньше этого, VTE по-прежнему подвержено влиянию и застревает в режиме вставки в скобках чаще, чем следовало бы.

Чтобы узнать, исправлен ли определенный эмулятор терминала в определенном дистрибутиве Ubuntu, проверьте его зависимости на packages.ubuntu.com . libvte-2.91-0это хорошо. libvte-2.90-9Это хорошо, только если реальная версия этого пакета 0.36.2 или новее, и libvte9плохо. В частности, xfce4-terminalглючит в Xenial и исправляется в Zesty.

Эгмонт
источник
1

Это может не относиться непосредственно к вашей проблеме, но я обнаружил, что этот симптом, вероятно, в моем случае вызван моим редактором mcedit (Midnight Commander)

Чтобы устранить проблему с ошибками, я добавил следующую функцию в мой файл .bashrc:

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

Тогда «источник .bashrc»

Теперь каждый раз, когда я выполняю 'mcedit', он автоматически добавляет 'printf "\ e [? 2004l"', когда я закрываюсь, чтобы сбросить "Режим вставки в скобках"

У меня работает, YMMV.

Тот же самый подход может использоваться с vi, vim, nano или любой другой неправильно работающей программой.

user83536
источник