Я использую Ubuntu 14.04, и у меня есть странная проблема с моим терминальным экраном, который прослушивает меня много. Кто-то мог помочь мне с ним или объяснить меня, если я делаю что-то не так или не путь Linux? У меня есть своего рода решение, но я хочу, понимают, почему это происходит снова и снова.
Я часто копирую команды удара со своих примечаний или из Интернета, и иногда я становлюсь странным 0 ~ и 1 ~ символ, который переносит вещи, которые я скопировал. Это является очень раздражающим, и это происходит полностью случайным способом.
После долгого поиска я узнал, что эту вещь называют бракуемым режимом вставки поэтому теперь, я использую эту команду printf "\e[?2004l"
починить мой терминал, если этот режим был внезапно включен.
Действительно ли возможно отключить эту опцию постоянно так или иначе? Я сталкивающийся с ним на всех машинах Ubuntu я работаю теперь. Ранее я использовал Ubuntu 10.10 и 12.04, и у меня никогда не было такой проблемы прежде.
Можно отключить заключенный в скобки режим вставки.
Для попытки его временно, в ударе:
bind 'set enable-bracketed-paste off'
Затем если Вам нравится, как это ведет себя, можно поместить установку в Ваш ~/.inputrc
, или в масштабе всей системы в /etc/inputrc
(или везде, где это находится на Ubuntu).
Вы можете поместить эту команду в свой bashrc
. Тогда это будет применяться каждый раз, когда вы открываете свой терминал.
Просто введите vi ~/.bashrc
, добавьте printf "\e[?2004l"
в конце и сохраните файл с помощью :wq
Для ответа на исходный вопрос того, почему это происходит вот, возможный сценарий:
Проблема, моя терминальная программа все еще думает, что заключенная в скобки вставка включена, когда sshing от оболочки для окружения B, таким образом, это продолжает добавлять символы вокруг вставляемого содержания (0 ~ и 1 ~ бит). Shell B не поддерживает их так, он просто передает их через неизменный. Необходимо сказать, что терминал для выключения заключенной в скобки вставки при наличии оболочки печатает специальную escape-последовательность - который является что printf "\e[?2004l"
делает.
Существует несколько способов решить проблему:
Если Вы не заботитесь о вставке на кронштейнах вообще, выключаете ее на оболочке, таким образом, она никогда не включается во-первых (ответ @jwd)
Если Вы хотите продолжать использовать заключенную в скобки вставку на оболочке A, но отключать на оболочке B, добавьте escape-последовательность к Вашему .bashrc
(ответ @MOHRE)
Оболочка обновления B для поддержки заключенной в скобки вставки, таким образом, это правильно интерпретирует те 0 ~ и 1 ~ символ.
Примечание стороны: при использовании экрана GNU необходимо выполнить это printf
команда за пределами экрана. Это, кажется, не работает в то время как внутри.