Ключові прив’язки Emacs для інших програм


1

Я важкий користувач Emacs і хотів би мати деякі прив'язки клавіатури Emacs під час редагування тексту в інших додатках.

Я розумію, що я міг запрограмувати ці макроси за допомогою клавіатури Maestro вручну, але був здивований, що не зміг знайти для цього жодних заздалегідь визначених макросів. Перш ніж я винаходити колесо, чи є сховища макросів клавіатури maestro там? Чи входить клавіатура Maestro з будь-яким набором макросів, що полегшують цей процес?

Відповіді:


1

Макроси клавіатури Maestro часто мають помітні затримки, і це насправді не найкращий метод для перестановки клавіатури.

Ви можете створити ~/Library/KeyBindings/та зберегти такий список властивостей, як цей, як DefaultKeyBinding.dict замість цього:

{
  "~b" = moveWordBackward:;
  "~f" = moveWordForward:;
  "~F" = moveWordForwardAndModifySelection:;
  "~B" = moveWordForwardAndModifySelection:;
  "~d" = deleteWordForward:;
  "~u" = (uppercaseWord:, moveForward:, moveForward:);
  "~l" = (lowercaseWord:, moveForward:, moveForward:);
  "~c" = (capitalizeWord:, moveForward:, moveForward:);
  "~v" = pageUp:;
  "~V" = pageUpAndModifySelection:;
  "^V" = pageDownAndModifySelection:;
  "^ " = setMark:;
  "^w" = deleteToMark:;
  "~<" = moveToBeginningOfDocument:;
  "~>" = moveToEndOfDocument:;
  "~/" = complete:;
  "^l" = selectParagraph:;
  "~h" = selectParagraph:;
  "^_" = undo:;
  "^/" = undo:;
  "^x" = {
    "^x" = swapWithMark:;
    "^m" = selectToMark:;
  };
}

DefaultKeyBinding.dict не працює в таких додатках, як Xcode або Firefox. Комбінації клавіш, які входять у стан мертвих клавіш (наприклад, U в розкладці клавіатури США), не можна перепризначити. Є також такі методи , як performClose:і openDocument:, але вони не працюють у всіх додатках. Див. Http://www.hcs.harvard.edu/~jrus/site/KeyBindings/Emacs%20Esc%20Bindings.dict або http://www.hcs.harvard.edu/~jrus/site/selectors.html .

Іншим варіантом є використання private.xml на зразок цього з KeyRemap4Macbook :

<?xml version="1.0"?>
<root>
  <item>
    <name>test</name>
    <identifier>test</identifier>
    <not>{{EMACS_MODE_IGNORE_APPS}}</not>
    <autogen>__KeyToKey__ KeyCode::P, VK_CONTROL | ModifierFlag::NONE, KeyCode::CURSOR_UP</autogen>
    <autogen>__KeyToKey__ KeyCode::N, VK_CONTROL | ModifierFlag::NONE, KeyCode::CURSOR_DOWN</autogen>
    <autogen>__KeyToKey__ KeyCode::B, VK_CONTROL | ModifierFlag::NONE, KeyCode::CURSOR_LEFT</autogen>
    <autogen>__KeyToKey__ KeyCode::F, VK_CONTROL | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT</autogen>
    <autogen>__KeyToKey__ KeyCode::P, VK_CONTROL | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_UP, VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::N, VK_CONTROL | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_DOWN, VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::B, VK_CONTROL | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::F, VK_CONTROL | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT, VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::B, VK_OPTION | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, VK_OPTION</autogen>
    <autogen>__KeyToKey__ KeyCode::F, VK_OPTION | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT, VK_OPTION</autogen>
    <autogen>__KeyToKey__ KeyCode::B, VK_OPTION | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_LEFT, VK_OPTION | VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::F, VK_OPTION | VK_SHIFT | ModifierFlag::NONE, KeyCode::CURSOR_RIGHT, VK_OPTION | VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::D, VK_OPTION | ModifierFlag::NONE, KeyCode::FORWARD_DELETE, VK_OPTION</autogen>
    <autogen>__KeyToKey__ KeyCode::V, VK_OPTION | ModifierFlag::NONE, KeyCode::PAGEUP</autogen>
    <autogen>__KeyToKey__ KeyCode::V, VK_OPTION | VK_SHIFT | ModifierFlag::NONE, KeyCode::PAGEUP, VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::V, VK_CONTROL | VK_SHIFT | ModifierFlag::NONE, KeyCode::PAGEDOWN, VK_SHIFT</autogen>
  </item>
</root>

У ключових кодах повинні бути змінені для розкладки клавіатури , як Дворжак або Colemak. EMACS_MODE_IGNORE_APPS включає в себе емулятори терміналів, програми Emacs та VM, але ви також можете додати спеціальні елементи appdef .

Існує також заздалегідь визначена група режимів Emacs , але, наприклад, параметр для зміни ⌥F на ⌥ → також змінює ⌥⌘F на ⌥⌘ →.


Дякую! Як посилання EMACS_MODE_IGNORE_APPSстосується private.xmlфрагмента, який ви включили у відповідь?
Амеліо Васкес-Рейна

1
Private.xml включає те, <not>{{EMACS_MODE_IGNORE_APPS}}</not>що не застосовується до програм, перелічених на пов'язаній сторінці.
Лрі

Здається, DefaultKeyBinding.dictваріант вже не працює в El-Capitan, якісь пропозиції? btw, є аналогічна відповідь у apple.stackexchange.com/questions/68716/…
zeliboba
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.