配置Eclipse单词边界以使“下一个单词键”跳过整个标识符

31
如果我有一段代码:
  MyIdentifierIsNice(OtherThingAlsoNice isBetterThen);
我想要改变在Eclipse中使用Ctrl-Left时的行为,从这里停止:
  My|Identifier|Is|Nice|(|Other|Thing|Also|Nice is|Better|Then|);|
到这里停止:
  MyIdentifierIsNice(|OtherThingAlsoNice |isBetterThen);|
或者至少不那么频繁。其他变体也可以,比如:
  MyIdentifierIsNice|(|OtherThingAlsoNice| isBetterThen|);|
主要是希望停止使用Next-Word等方式来导航包含多个单词的CamelCaseIdentifier
我使用的是SpringSourceSuite版本2.5.1,是Eclipse 3.6,我猜测。

2
那个驼峰式的导航太让人恼火了。有些人请求这种奇怪的行为,他们还把它设为默认值...更糟糕的是,附带Android SDK的Eclipse无法正确处理Ctrl+Left/Ctrl+Right... - Pavel P
3个回答

42
尝试取消选择该选项:
Preferences / Java / Editor / Smart caret positioning in Java names

图片描述

同时查看光标位置是否改进了用户体验。

如果这不是Java,您可以在以下选项中找到类似的选项:

Preferences / General / Editors / Text Editors / Smart caret positioning at line start and end

通常会被选择,这意味着如果光标仍然停在每个单词上,则可能表明特定语言的其他设置正在覆盖它。


我想在发布问题之前就尝试过那个,但我会重新检查。谢谢。 - towi
1
我想知道,如果我仍然需要以其他方式跳转到单词的下一个驼峰片段,该怎么办。例如,在Xcode中,我可以使用alt+箭头迭代单词,并使用ctrl+箭头迭代驼峰。在eclipse中我该怎么做? - DanSkeel
5
禁用这个选项后,Ctrl+左/右箭头将把每个制表符视为一个“单词”,这对于使用硬制表符缩进的用户来说是一场噩梦。它还将Java标识符中“_”的开头和结尾都视为单词边界,因此您需要按三次Ctrl+右箭头才能跳过标识符“x_y”。 - Sam Harwell
3
"智能插入符号定位在行首和行尾"与此无关。 - RedGlyph
1
作为一名XCode用户,我同意@DanSkeel的看法。我已经弄清楚了这个问题,并将其发布在这里作为答案。 - Matt Mc
显示剩余3条评论

10

从XCode转到Eclipse后,我发现默认的导航方式很烦人。在Eclipse中,Alt+Left和Alt+Right可以移动到下一个camelcase段落,而Ctrl+Left/Right则无作用。在XCode中,Alt+Left/Right可以在单词之间移动,而Ctrl+Left/Right则可以在camelcase段落之间移动。这样可以控制您的导航精细度。

我是这样为自己解决的:进入首选项 > 一般 > 按键,搜索“Word”,然后将“Next Word”和“Previous Word”的绑定从Alt+Left/Right更改为Ctrl+Left/Right。这样,Alt-导航就是单词级别的,而Ctrl-导航就是像XCode一样在camelcase段落之间移动。

我认为这可能对某些人有用。

编辑:

当我继续使用这些新设置时,我发现另一个问题:

尽管导航按预期工作,但选择功能有些奇怪的行为。即Shift+Ctrl+Left/Right有时会选择大块文本而不仅仅是下一个camelcase组件。

要修复这个问题,请再次进入首选项 > 通用 > 按键,搜索“Select”。

将“Select Next/Previous Word”设置为Shift+Ctrl+Right/Left。取消绑定“Select Next/Previous Element”(有三个“Whens”可供选择,我取消了所有3个)。

完成。


1
默认情况下,Alt+左/右键用于移动到上一个/下一个位置。 - phuclv

1
如果您想要一种非常简单的方法来选择整个单词,而无需禁用智能光标定位,请使用以下方法:
在单词开头或内部: Shift+Alt+Right 在单词末尾或中间: Shift+Alt+Left

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接