はい、OSX はカーソルを単語の後方および前方に移動するための⌥+ ←および⌥+ →をすでにサポートしていますが、矢印キーに到達するのは面倒です。では、なぜ⌥+ Bと⌥+ Fでこれを行わないのですか?つまり、私が(意図的に)⌥+ 付きの積分記号oteを書いたことは一度もありませんB(今は別です)。
要するに、私はOSX全体でEmacsのような動作(たとえば、文字転送の場合は^+ だけではない)を使用したいと思いFます。
はい、OSX はカーソルを単語の後方および前方に移動するための⌥+ ←および⌥+ →をすでにサポートしていますが、矢印キーに到達するのは面倒です。では、なぜ⌥+ Bと⌥+ Fでこれを行わないのですか?つまり、私が(意図的に)⌥+ 付きの積分記号oteを書いたことは一度もありませんB(今は別です)。
要するに、私はOSX全体でEmacsのような動作(たとえば、文字転送の場合は^+ だけではない)を使用したいと思いFます。
回答:
次の~/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などの一部のアプリケーションでは機能しません。キルリングを使用するメソッドは、リッチテキストからフォーマットを削除します。デッドキー状態を入力するキーの組み合わせ(USキーボードレイアウトのoption-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を参照してください。
1つのオプションは、事前定義された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.enまたはhttp://osxnotes.net/keyremap4macbook.htmlを参照してください。
.dict
たとえば、Xcodeはこれに悩まされることはありません(ただし、カスタムキーバインド、たとえば⌘+ Bや⌘+ Fで「解決」できます)。それでも、OS全体で(ほぼ)Emacsのような動作をさせるには非常に強力です。
"~w" = selectWord:;
中で、私のDefaultKeyBinding.dict。