'특수 문자'대신 단어 앞으로 (⌥ + F)와 단어 뒤로 (⌥ + B) 전체에서 OSX를 개선 하시겠습니까?


8

예, OSX는 이미 커서를 단어 뒤로 이동하고 앞으로 이동하기 위해 + + 를 지원 하지만 화살표 키에 도달하는 것은 성가신 일입니다. 그렇다면 왜 + B+를 사용 F하지 않습니까? 나는 한 번도 (의도적으로) + 와 함께 정수 부호 ∫을 쓰지 않았다는 것을 의미 B합니다.

요컨대, 나는 OSX 전체에서 Emacs와 같은 행동을하고 싶습니다 (단지 문자 전달을 위해 ^+ 뿐만 아니라 F).


관련 질문 : 문자 수정 자로 Mac 키보드 옵션 사용 중지

답변:


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.dictXcode 또는 Firefox와 같은 일부 응용 프로그램에서는 작동하지 않습니다. 킬 링을 사용하는 방법은 서식있는 텍스트에서 서식을 제거합니다. 데드 키 상태로 들어가는 키 조합 (예 : 미국 키보드 레이아웃의 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 을 참조하십시오.

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.en 또는 http://osxnotes.net/keyremap4macbook.html 을 참조하십시오.


놀랄 만한. 상대적으로 낮은 수준의 동작을 변경하지만 매우 쉽습니다. OS 천국으로 도약 잘하면 100 % 작동하는 솔루션이 더 좋기를 바랍니다. 그렇지 않으면 이것이 대답입니다.
Blaz

말했듯이 모든 앱에서 작동하지는 않습니다. Xcode는 이것에 대해 멍청하지 않을 것입니다 .dict(그러나 사용자 정의 키 바인딩 (예 : ⌘ + B 및 ⌘ + F)으로 "해결 가능"). 여전히 OS 전체에서 Emacs와 유사한 동작을 수행하는 데 매우 강력합니다.
Blaz

KeyRemap4MacBook에는 emacs 모드 그룹이 있어 예를 들어 ⌥F에서 ⌥ →로 변경하지만 터미널 또는 Emacs가 맨 앞에있을 때는 아닙니다. 이를 기반으로 private.xml 을 작성하여이를 사용자 정의 할 수 있습니다 . 실제 해결책은 화살표 키와 수정 키가있는 키보드를 더 나은 위치에 얻는 것입니다.
Lri November

1
@courteous KeyRemap4MacBook의 emacs 모드가 그렇게합니다. 키 레이아웃 파일이나 DefaultKeyBinding.dict에서는 사용할 수 없습니다.
Lri November

1
@ courteous 나는 그것을 대답에 추가했습니다. 나는이 "~w" = selectWord:;내 DefaultKeyBinding.dict .
5
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.