C-S-DEL (убить всю строку сразу) не работает в моем emacs

Это говорит, что C-S-DEL привязан к kill-whole-line команда, которая сразу уничтожает всю строку. Я попробовал это на своем макбуке с emacs 24.5.1, однако он вообще не работает. Затем я использую C-h k C-S-DEL, чтобы проверить, что произошло, когда я нажму эту горячую клавишу. Пишет, что распознается только ключ DEL, кроме Ctrl + Shift + DEL.

Я устанавливаю этот emacs (версия 24.5.1) через Homebrew и запускаю его в iTerm2. У него нет версии с графическим интерфейсом (я предпочитаю использовать в терминале) и запускается просто командой emacs.

Как я могу настроить свой emacs для поддержки C-S-DEL?


person Douglas Su    schedule 15.08.2015    source источник
comment
Обычно в подобных случаях портится ваш терминал. Вы запускаете его в графическом режиме?   -  person mike3996    schedule 15.08.2015
comment
Какой Emacs вызывался как? Acquamacs в специальном окне — это совсем другой зверь, чем emacs -nw в окне терминала.   -  person tripleee    schedule 15.08.2015
comment
@tripleee Я запускаю emacs в iTerm2, он устанавливается через доморощенный -- brew install emacs   -  person Douglas Su    schedule 15.08.2015
comment
@progo я запускаю его в iTerm2   -  person Douglas Su    schedule 15.08.2015
comment
Итак, какую версию Emacs вы используете, и запускаете ли вы ее в окне iTerm2 или как фоновый процесс в отдельном окне? Пожалуйста, отредактируйте вопрос, а не добавляйте комментарии. Спасибо.   -  person tripleee    schedule 15.08.2015
comment
возможный дубликат клавиша Shift не работает в моем emac   -  person tripleee    schedule 16.08.2015


Ответы (1)


Это возможно, но это немного каменно. Используйте такой инструмент, как Karibinder, чтобы переназначить C-S-delete при использовании вашего терминала на последовательность клавиш, которую ваш терминал получает. Вы можете использовать M-x describe-unbound-keys с unbound.el, чтобы найти такие ключи. Затем в вашей конфигурации emacs вы должны переназначить эти клавиши на соответствующие функции.

Вот пример того, как вы можете переназначить C-S-delete на C-x n M-[ u с помощью Karibinder, поместив его в свой файл private.xml. документация Карабиндера очень хороша.

  <appdef>
    <appname>TERMINAL</appname>
    <equal>com.apple.Terminal</equal>
  </appdef>

  <item>
    <name>Fix C-S-delete Emacs</name>
    <identifier>private.m_s_delete_emacs</identifier>
    <only>TERMINAL</only>
    <autogen>
        __KeyToKey__
        KeyCode::DELETE, ModifierFlag::OPTION_L | ModifierFlag::SHIFT_L,
        KeyCode::X, ModifierFlag::CONTROL_L, KeyCode::N, KeyCode::BRACKET_LEFT, ModifierFlag::OPTION_L, KeyCode::U
    </autogen>
  </item>

И затем в вашей конфигурации emacs:

(global-set-key (kbd "C-x n M-[ u") 'kill-whole-line)

Возможно, есть больше пользователей OS X, которые предпочитают использовать терминальную версию emacs, а не версию с графическим интерфейсом. В этом случае сообщество может создать комплексную конфигурацию Karbiner & emacs, чтобы охватить все последовательности клавиш, использующие модификаторы, не поддерживаемые терминалом. Я считаю, что на данный момент такой вещи нет, но я обновлю свой ответ, если что-нибудь найду или если что-то будет создано.

person Bart Louwers    schedule 06.01.2016