Emacs в терминале создает фальшивые события при вставке - PullRequest
0 голосов
/ 07 ноября 2011

При запуске Emacs в терминале и вставке текста (через Shift-insert, Ctrl+v и т. Д.) Создается впечатление, что Emacs создает поддельные события для каждого вставляемого символа.Это как будто я нажимал каждый символ.

Так что, если f и o имеют привязки клавиш и вставляется текст foo.Функции, с которыми связаны клавиши f и o, срабатывают.

Почему это так?И можно ли этого избежать?

Спасибо!

1 Ответ

2 голосов
/ 08 ноября 2011

Если вы запускаете Emacs в терминале, ваши нажатия клавиш не напрямую переходят в Emacs, а в вашу программу эмулятора терминала (например, gnome-терминал или xterm). Ctrl-Shift-V - это привязка клавиш вашего конкретного эмулятора терминала (например, он не работает таким образом в xterm) и никогда не видел Emacs. Спецификация терминала не включает в себя функцию копирования / вставки (в конце концов, это время, когда физические последовательные терминалы подключены к вашему компьютеру, поэтому интерфейс терминала также содержит настройки, такие как скорость передачи данных, которые не имеют смысла для окна на вашем компьютере) , Поэтому эмулятор терминала должен эмулировать эффект, посылая отдельные символы, как если бы вы их нажимали. Поэтому Emacs получает эти нажатия клавиш, как будто вы их набрали.

То есть не Emacs создает фальшивые события, это программа-эмулятор терминала, которая отправляет их в Emacs. Emacs не знает, нажали ли вы эти клавиши самостоятельно, вставили ли они откуда-то или использовали другую программу для отправки событий нажатия клавиш на эмулятор терминала.

Ситуация меняется, если вы запускаете Emacs в окне, потому что тогда он взаимодействует напрямую с оконной системой вместо (эмулируемого) терминала. И система управления окнами имеет специальные события для копирования / вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...