使Mac OS X“ Option-Arrow”像Windows“ Ctrl-Arrow”一样工作


20

我依靠Windows 上的“ Ctrl- ”命令浏览文本文档。

这个有用的组合键将迅速将我带到下一个单词的开头。例如,以下序列说明了连续按Ctrl- 后光标位置将发生什么情况(“ ^”代表光标):

^The quick brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick brown fox ^jumped over the lazy dog
...

而且,如果我开始按,它会将光标移动到文档中完全相同的位置,只是朝另一个方向移动(这是理想的,因为光标的位置是可预测的,这使我可以更快地制作我的编辑):

The quick brown fox ^jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
^The quick brown fox jumped over the lazy dog
...

Mac OS X具有类似的键盘快捷键(Option-- Ctrl将“ Option” 映射到“ ”,因此我可以按照自己习惯的方式获得相同的功能)。

但是,使用右箭头键时,“ Option- Arrow”将我带到当前单词的末尾,如下所示:

^The quick brown fox jumped over the lazy dog
The^ quick brown fox jumped over the lazy dog
The quick^ brown fox jumped over the lazy dog
The quick brown^ fox jumped over the lazy dog
The quick brown fox^ jumped over the lazy dog
...

而且,更糟糕的是,朝着另一个方向前进并不能使您回到前进的方向,而是使您回到最后一个单词的开头:

The quick brown fox^ jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
^The quick brown fox jumped over the lazy dog
...

这让我感到非常沮丧,因为我经常需要在Windows和Mac之间切换,而且我很少想跳到当前单词的结尾(为什么我也要这样,除非我也按住“ Shift”? )。我一直想跳到下一个单词的开头。

我愿意花一些时间使Mac版本以相同的方式工作(购买软件,编写与这些键盘快捷键绑定的自定义Applescript命令),所以我正在寻找建议。

有没有现有的工具可以改变我的状况?

您如何建议“修复”它?

谢谢

编辑

我能够在Automator中创建“服务”,并使用了以下AppleScript:

on run {input, parameters}

    tell application "System Events" to key code 124 using {option down}
    tell application "System Events" to key code 124

end run

然后,使用“系统偏好设置”中的“键盘”设置将此服务绑定到“ Command- ”击键。

但是,要使其正常工作,我必须将手指从Command钥匙上移开。这使其毫无意义。它也很慢,而且似乎无法在我最需要它在(Xcode)中工作的应用程序中工作。

Answers:


22

您可以通过以下方法使⌃ Control+箭头键按您的描述工作。将以下属性列表复制到~/Library/KeyBindings/DefaultKeyBinding.dict(如果目录不存在,则可以创建该目录):

{
    "^\UF703" = ("moveWordForward:", "moveWordForward:", "moveWordBackward:");
    "^$\UF703" = ("moveWordForwardAndModifySelection:", "moveWordForwardAndModifySelection:", "moveWordBackwardAndModifySelection:");
}

这将设置⌃ Control+箭头导航到下一个单词的开头(通过使用OS X的常规导航三次:到当前单词的结尾,下一个单词的结尾,然后返回到下一个单词的开头)。我还提供了一个适用的版本,⇧ Shift因此您可以随时选择文本。

警告:这仅适用于Cocoa应用,但我认为普通的⌥ Option+箭头导航也可以。另外,请确保重新启动您的应用程序!


!正是我所希望的...谢谢!让我尝试一下,然后我将标记答案。
史蒂夫

非常感谢!像魅力一样工作。仅供参考,“键绑定”与“键绑定” ...我使用了“键绑定”,并且有效。不确定是否有所作为。糟糕的Xcode会使用它们自己的,功能较弱的Key Bindings覆盖它们。
史蒂夫

糟糕,是的,我是说键绑定!Xcode很好,因为您可以导航camelCase子词。
jtbandes

我确实喜欢camelCase导航。理想情况下,我希望Visual Studio在Xcode中的行为...哦。
史蒂夫

您至少可以自定义Xcode。首选项中有一个选项卡,用于更改键绑定。
jtbandes

5

您可以尝试的事情。我没有测试过它们是否可以执行您需要的功能。

有一个免费的开源实用程序,用于重新映射Mac OS X的关键命令,称为DoubleCommand。这是一个内核扩展,因此可以在很低的水平上运行。

DoubleCommand人们建议您检出的另一个免费程序是KeyRemap4MacBook。您需要使用其中一个。如果它们都安装在Mac上,它们将发生冲突。


1
在OS X 10.11.x上使用KeyRemap4MacBook使Control + [Arrow]像在Windows中一样向下滚动,直到找到For PC Users,然后选中(对我来说,选项六)“使用PC Style Control +上/下/左/右”。那里还有其他非常有用的选项。绝对要投票给这个答案,最重要的是,它并不需要花费额外的数百美元!
约翰,

1

经过多年烦人的OSX默认映射之后,我切换了Command和Control键,并希望Control + Arrow键提供向前移动词,向后移动词的功能,而不是BOL / EOL。可接受的答案对我有用,但^更改为@,因为我现在使用Control而不是Command。我还将较少使用的BOL / EOL函数映射到Option + Arrow键组合。

{
    "@\UF702" = ("moveWordBackward:");
    "@$\UF702" = ("moveWordBackwardAndModifySelection:");
    "~\UF702" = ("moveToBeginningOfLine:");
    "~$\UF702" = ("moveToBeginningOfLineAndModifySelection:");
    "@\UF703" = ("moveWordForward:", "moveWordForward:", "moveWordBackward:");
    "@$\UF703" = ("moveWordForwardAndModifySelection:", "moveWordForwardAndModifySelection:", "moveWordBackwardAndModifySelection:");    
    "~\UF703" = ("moveToEndOfLine:");
    "~$\UF703" = ("moveToEndOfLineAndModifySelection:");
}
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.