Почему режим вставки на кронштейнах включен эпизодически на моем терминальном экране?

Я использую Ubuntu 14.04, и у меня есть странная проблема с моим терминальным экраном, который прослушивает меня много. Кто-то мог помочь мне с ним или объяснить меня, если я делаю что-то не так или не путь Linux? У меня есть своего рода решение, но я хочу, понимают, почему это происходит снова и снова.

Я часто копирую команды удара со своих примечаний или из Интернета, и иногда я становлюсь странным 0 ~ и 1 ~ символ, который переносит вещи, которые я скопировал. Это является очень раздражающим, и это происходит полностью случайным способом.

После долгого поиска я узнал, что эту вещь называют бракуемым режимом вставки поэтому теперь, я использую эту команду printf "\e[?2004l" починить мой терминал, если этот режим был внезапно включен.

Действительно ли возможно отключить эту опцию постоянно так или иначе? Я сталкивающийся с ним на всех машинах Ubuntu я работаю теперь. Ранее я использовал Ubuntu 10.10 и 12.04, и у меня никогда не было такой проблемы прежде.

22
задан 16 August 2015 в 11:26

3 ответа

Можно отключить заключенный в скобки режим вставки.

Для попытки его временно, в ударе:

bind 'set enable-bracketed-paste off'

Затем если Вам нравится, как это ведет себя, можно поместить установку в Ваш ~/.inputrc, или в масштабе всей системы в /etc/inputrc (или везде, где это находится на Ubuntu).

11
ответ дан 23 November 2019 в 01:36

Вы можете поместить эту команду в свой bashrc. Тогда это будет применяться каждый раз, когда вы открываете свой терминал.

Просто введите vi ~/.bashrc, добавьте printf "\e[?2004l" в конце и сохраните файл с помощью :wq

7
ответ дан 23 November 2019 в 01:36

Для ответа на исходный вопрос того, почему это происходит вот, возможный сценарий:

  • Мой домашний компьютер имел новую версию zsh, который поддерживал вставку на кронштейнах (давайте назовем его, окружают A),
  • Я sshed в компьютер с моим набором оболочки к более старой версии удара, который не поддерживает вставку на кронштейнах (окружают B),

Проблема, моя терминальная программа все еще думает, что заключенная в скобки вставка включена, когда sshing от оболочки для окружения B, таким образом, это продолжает добавлять символы вокруг вставляемого содержания (0 ~ и 1 ~ бит). Shell B не поддерживает их так, он просто передает их через неизменный. Необходимо сказать, что терминал для выключения заключенной в скобки вставки при наличии оболочки печатает специальную escape-последовательность - который является что printf "\e[?2004l" делает.

Существует несколько способов решить проблему:

  1. Если Вы не заботитесь о вставке на кронштейнах вообще, выключаете ее на оболочке, таким образом, она никогда не включается во-первых (ответ @jwd)

  2. Если Вы хотите продолжать использовать заключенную в скобки вставку на оболочке A, но отключать на оболочке B, добавьте escape-последовательность к Вашему .bashrc (ответ @MOHRE)

  3. Оболочка обновления B для поддержки заключенной в скобки вставки, таким образом, это правильно интерпретирует те 0 ~ и 1 ~ символ.

Примечание стороны: при использовании экрана GNU необходимо выполнить это printf команда за пределами экрана. Это, кажется, не работает в то время как внутри.

5
ответ дан 23 November 2019 в 01:36

Другие вопросы по тегам:

Похожие вопросы: