OSX:使用⌘⇧→和⌘⇧←修改文本选择


10

我已经使用键盘选择了一些文本,从底行开始向上移动(|字符表示光标位置):

AAA | {BBB CCC

DDD} EEE FFF

创建选择


现在,我想更改选择,使其从第一行的末尾开始,即看起来像这样:

预期结果:

AAA BBB CCC | {

DDD} EEE FFF


我可以通过逐字减少选择

使用Option-Shift-箭头操纵选择


但自然的方法是通过 ,直接跳到第一行的末尾。在许多体面的文本编辑器中,这可以很好地工作(例如Sublime Text 2)。|当选择文本时,它们还会使位置保持可见。

但是,OSX应用程序的默认行为是它们会忽略光标当前位于选择内容的开头这一事实,将其向右移动会删除该选择内容。取而代之 的是,无论光标当前位于何处, 都始终将选择内容从其末端扩展到行尾:

实际结果:

AAA {BBB CCC

DDD EEE FFF} |

使用Command-Shift-箭头操纵选择


有什么方法可以使本机OSX应用程序也按预期方式运行?

我使用的是OSX Yosemite 10.10.2,但据我所知,这个问题一直存在。


我可以在10.10.1中重现它-也许它已经在Beta中修复了?
2015年

1
我正在使用优胜美地10.10.2(现在也将其添加到问题中)。但我认为情况一直如此。我主要使用具有良好文本编辑功能的代码编辑器,但我很乐意为此找到操作系统级别的解决方案。
Jakub Roztocil

1
请查看此Apple支持文档,该文档指出cmd + shift +向右箭头会显示select text between the insertion point and the end of the current line。您的示例中唯一未包含选择的行是最后一行。因此,OS X中的预期行为是从那里扩展选择,而不是在开始的地方将其缩短!我知道有些编辑器的行为有所不同,但是他们这样做是错误的,而不是系统!
Asmus

1
@Asmus在(和许多其他)键盘快捷方式的描述之后有一个星号,但没有解释。知道什么(*)意思吗?
Jakub Roztocil

1
不知道这(*)意味着什么,但是它可能是文档的先前版本遗留下来的。我已经稍微更新了我的答案,以包括我所知道的仅全局键绑定选项,但是不幸的是,我很确定没有办法实现您想要的。由于该行为不是内置行为,因此即使您可以触发该行为,应用程序现在也不会如何处理它。
Asmus

Answers:


1

如果您选择了多个文本,Mac不会使用光标位置,它会认为光标位于“所有选定的文本”上。

如果您使用 Cmd ⌘ Shift ⇧ 而不是
添加到 Shift ⇧ 包含先前选择的选择中,则可以看到这一点。

不是解决方法,但是可能的解决方法是将光标移动到当前选择的末尾,同时取消选择它,然后 Cmd ⌘ Shift ⇧ 选择到该行的开头。


这是什么意思?“多个文本选择”。
Nicolas Barbulesco 2015年

1

因此,按照我的观察方式,OS X上的文本导航可以这样工作(并且有望工作):

  1. 每行(或文档,即大量数据)导航:

    cmd+箭头键:逐行移动(向左/向右移动行,向上/向下移动整个文档)。按住shift选择

  2. 按单词导航(即一小部分数据):

    alt+箭头键:按字移动(左/右)。按住shift选择。

因此,要获得“预期结果”,您应该先按向右箭头将其移至当前选择的末尾,然后按cmd+ shift+ 选择通向其的行。

当你已经一个选择:

  1. 使用alt上面的组合键将根据方向增加/减少选择(始终修改先前选择的终点,前提是您略微错过了终点)。仅使用Shift +箭头键添加单个字符也是如此。
  2. cmd组合在两个方向上的增加,假设你后选择文本的大块反正。

更新资料

长话短说:您真正想要的是不可能的。如果通过运行查看可用系统键绑定的列表

plutil -convert xml1 /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict -o -|pl|grep -v noop:|ruby -pe '$_.gsub!(/[^ -~\n]/)' | grep -i selection

您将看到,即使您可以将自定义键绑定到所有选择功能 ~/Library/KeyBindings/DefaultKeyBinding.dict ,也没有这样的功能可以实现您所请求的行为(因为该行为未内置于系统中)。


我认为Apple Up和Apple Down转到文档的开头和结尾,而不是按页面导航。
Nicolas Barbulesco 2015年

1
@NicolasBarbulesco,您完全正确,我之前仅在一行中写过“文档”,不知道接下来为什么要写“页面”。立即修复。
阿斯姆斯
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.