Emacsify OSX у всьому: вперед (⌥ + F) та назад (⌥ + B) замість „спеціальних символів“?


8

Так, OSX вже підтримує + і + для переміщення курсорного слова назад і назад вперед, але тягнення до клавіш зі стрілками дратує. Отже, чому б краще не зробити + Bі + Fзробити це? Тобто, не один раз я (навмисно) писав цілісний знак ∫ з + B(крім цього часу).

Коротше кажучи, я вважаю за краще поводитися на Emacs (не тільки, скажімо, ^+ + Fдля перенаправлення символів) у всій OSX.


Пов'язане запитання: Перестаньте використовувати клавіатуру Mac Option як модифікатор символів

Відповіді:


7

DefaultKeyBinding.dict

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

{
  "^ " = setMark:;
  "^/" = undo:;
  "^l" = selectParagraph:;
  "^u" = deleteToBeginningOfParagraph:;
  "^w" = deleteToMark:;
  "^x" = {
    "^x" = swapWithMark:;
    "^m" = selectToMark:;
  };
  "^V" = pageDownAndModifySelection:;
  "~@" = selectWord:;
  "~b" = moveWordBackward:;
  "~c" = (capitalizeWord:, moveForward:, moveForward:);
  "~d" = deleteWordForward:;
  "~f" = moveWordForward:;
  "~l" = (lowercaseWord:, moveForward:, moveForward:);
  "~r" = centerSelectionInVisibleArea:;
  "~u" = (uppercaseWord:, moveForward:, moveForward:);
  "~v" = pageUp:;
  "~w" = (deleteToMark:, setMark:, yank:, swapWithMark:);
  "~B" = moveWordForwardAndModifySelection:;
  "~F" = moveWordForwardAndModifySelection:;
  "~V" = pageUpAndModifySelection:;
}

DefaultKeyBinding.dictне працює в деяких додатках, таких як Xcode або Firefox. Методи, які використовують кільце вбивства, видаляють форматування із багатого тексту. Комбінації клавіш, які вводяться в стан мертвих клавіш (наприклад, параметр u у версії клавіатури США), не можна перепризначити.

Дивіться також http://www.hcs.harvard.edu/~jrus/site/KeyBindings/Emacs%20Opt%20Bindings.dict . transposeWords:не працює у більшості програм. openDocument:і saveDocument:не працюють у додатках, які використовують автоматичне збереження, і performClose:не працює також скрізь.

Для отримання додаткової інформації див. Http://www.hcs.harvard.edu/~jrus/site/cocoa-text.html або http://osxnotes.net/keybindings.html .

KeyRemap4MacBook

Одним із варіантів є включення налаштувань у попередньо визначеній групі режимів Emacs :

Інший варіант - зберегти такий файл як ~/Library/Application Support/KeyRemap4MacBook/private.xml:

<?xml version="1.0"?>
<root>
  <appdef>
    <appname>EMACSMODEIGNORE</appname>
    <equal>com.gnu.Emacs</equal>
    <equal>com.apple.Terminal</equal>
    <equal>com.googlecode.iterm2</equal>
    <equal>com.vmware.fusion</equal>
    <prefix>com.vmware.proxyApp.</prefix>
  </appdef>
  <item>
    <name>emacs</name>
    <identifier>private.emacs</identifier>
    <not>EMACSMODEIGNORE</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>
    <autogen>__KeyToKey__ KeyCode::U, VK_CONTROL | ModifierFlag::NONE, KeyCode::DELETE, VK_COMMAND</autogen>
  </item>
</root>

Потім відкрийте додаток KeyRemap4MacBook, натисніть кнопку ReloadXML та увімкніть налаштування.

Змініть коди ключів, якщо ви використовуєте розкладку клавіатури, наприклад, Дворак або Колемак.

Для отримання додаткової інформації див. Https://pqrs.org/macosx/keyremap4macbook/xml.html.en або http://osxnotes.net/keyremap4macbook.html .


Дивовижний. Зміна відносно низького рівня поведінки та в той же час така проста. Стрибок ближче до раю ОС. Сподіваємось, є ще краще, 100% робоче рішення, інакше це відповідь.
Блаз

Як ви кажете, він працює не у всіх додатках. Xcode, наприклад, не зміститься до цього .dict(але це можна "вирішити" за допомогою користувацької клавіатури, скажімо, ⌘ + B і ⌘ + F). Тим не менш, дуже потужна, щоб мати поведінку, схожу на Emacs (майже) у всій ОС.
Блаз

KeyRemap4MacBook має групу режимів emacs, яка змінюється, наприклад, ⌥F на ⌥ →, але не тоді, коли Terminal або Emacs передні. Ви можете налаштувати його, створивши на його основі private.xml . Я думаю, що справжнє рішення - просто отримати клавіатуру з клавішами зі стрілками та модифікаторними клавішами в кращих положеннях.
Лрі

1
@courteous Режим emacs у KeyRemap4MacBook робить це. Це неможливо у файлі викладки ключів або з DefaultKeyBinding.dict.
Лрі

1
@courteous Я також додав це до відповіді. У мене є "~w" = selectWord:;в моєму DefaultKeyBinding.dict .
Лрі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.