在整个Emacsify OSX中:用单词向前(⌥+ F)和单词向后(⌥+ B)代替“特殊字符”?


8

是的,OSX已经支持+ + 用于将光标向后和向前移动光标,但是触及箭头键很烦人。那么,为什么不宁可拥有+ B+ F呢?我的意思是,我(有意地)没有一次用+ B(除了现在)写积分符号∫ 。

总之,我宁愿类Emacs的行为(不只是,说,^+ F字符进)在整个OSX。


相关问题:停止使用Mac键盘选项作为字符的修改器

Answers:


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)中不起作用。使用kill环的方法会删除富文本格式。进入死键状态的键组合(例如美国键盘布局中的Option -u)无法重新分配。

另请参见http://www.hcs.harvard.edu/~jrus/site/KeyBindings/Emacs%20Opt%20Bindings.dicttransposeWords:在大多数应用程序中不起作用。openDocument:并且saveDocument:不能在使用自动保存的应用程序中使用,performClose:也不能在所有地方使用。

有关更多信息,请参见http://www.hcs.harvard.edu/~jrus/site/cocoa-text.htmlhttp://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按钮,然后启用设置。

如果使用Dvorak或Colemak之类的键盘布局,请更改键码

有关更多信息,请参见https://pqrs.org/macosx/keyremap4macbook/xml.html.enhttp://osxnotes.net/keyremap4macbook.html


惊人。更改相对较低级别的行为却很容易。迈向OS天堂的飞跃。希望有更好的100%工作解决方案,否则,这就是答案。
Blaz 2012年

如您所说,它并非在所有应用程序中都有效。例如,Xcode不会屈服于此.dict(但是可以使用自定义键绑定(例如⌘+ B和⌘+ F)“解决”该问题)。尽管如此,在整个操作系统中(几乎)具有类似Emacs的行为非常强大。
Blaz 2012年

KeyRemap4MacBook有一个emacs模式组,例如将⌥F更改为⌥→,但在Terminal或Emacs位于最前面时不会更改。您可以通过基于它创建一个private.xml来对其进行自定义。我认为真正的解决方案是使键盘上的箭头键和修饰键处于更好的位置。
Lri 2012年

1
@courteous KeyRemap4MacBook中的emacs模式可以做到这一点。在键盘布局文件或DefaultKeyBinding.dict中是不可能的。
Lri 2012年

1
@courteous我也将其添加到答案中。我"~w" = selectWord:;DefaultKeyBinding.dict中
Lri 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.