按下 Ctrl 和光标键时让 Visual Studio 理解 CamelCase

Posted

技术标签:

【中文标题】按下 Ctrl 和光标键时让 Visual Studio 理解 CamelCase【英文标题】:Make Visual Studio understand CamelCase when hitting Ctrl and cursor keys 【发布时间】:2010-09-23 18:24:52 【问题描述】:

有没有一种方法可以配置 Visual Studio 2008 以理解 CamelCase? 具体来说,我希望能够让 Ctrl + rightleft 光标带我进入一个小节变量或类型名称。

即,如果我的光标位于这一行的开头:

LongNamedExampleClass longNamed = new LongNamedExampleClass();

我点击Ctrl + right,我想跳转到类名中的“Named”,而不是变量名的开头。如果我再次点击它,我想去“Example”。我希望这是有道理的。

我在 Eclipse 中经常使用这个导航功能,发现很难忘记如此根深蒂固的东西。

【问题讨论】:

Resharper 支持该功能。 Resharper 这样做。我想你可以编写自己的插件来做同样的事情。 【参考方案1】:

我认为 Visual Studio 内部不支持此功能,因为它似乎使用正常方式 Ctrl+Right 和 Ctrl+Left 在 Windows 环境中工作。但它可能通过某种扩展或插件来实现。

【讨论】:

猜测其他人是否能够回答问题并不能真正回答问题。【参考方案2】:

Visual Studio 不支持这种行为。但是,DevExpres's CodeRush!产品支持这样的导航(使用 Alt-Left 和 Alt-Right),以及大量其他帮助导航的功能。 CodeRush!产品还与他们的重构工具捆绑在一起。他们还提供免费的 CodeRush! & Refactor Express 产品,虽然我不确定 Camel Casing 导航是否是 express 产品的一部分。

【讨论】:

【参考方案3】:

它不是 Visual Studio 原生的,但您可以使用 CodeRush Express 免费获取它。 (ReSharper 和 CodeRush 需要付费)。

【讨论】:

现在只有试用版是免费的【参考方案4】:

感谢推荐 Resharper 的人。这给了我另一个更喜欢它的理由。只是要具体说明它的位置 - JetBrains 称之为 CamelHumps(可爱),您可以使用菜单打开它:

Resharper -> 选项 -> 环境 -> 编辑器 -> 编辑器行为 -> 使用 CamelHumps

...在旧版本的 Resharper 中,它是;

Resharper -> 选项 -> 编辑器 -> 使用 CamelHumps

【讨论】:

是否有选择整个单词的选项,即使 CameHumps 已打开?目前我必须按左右几次才能选择一个单词。我希望你能得到我。 要在 CamelHumps 开启时快速选择整个单词,请按两次 Extend Selection shortcut key(Ctrl+Alt+RightCtrl+W)。 不仅选择整个单词,还跳过整个单词? 这是 ctrl+[箭头] 的正确解决方案。但是,有两个 resharper 命令 - Resharper_TextControlPreviousWord 和 Resharper_TextControlNextWord 以便您可以绑定不同的快捷方式来执行相同的驼峰式导航。但是,如果 CamelHumps 选项关闭,它们将不起作用。【参考方案5】:

将下面的宏添加到视觉工作室。

http://visualstudiomacros.blogspot.com/2008/03/getting-ctrl-right-arrow-to-respect.html

【讨论】:

【参考方案6】:

如果您安装了 ReSharper,您还可以为 CamelHump 配置 Visual Studio 键盘快捷键“Alt-Right”和“Alt-Left”,而不会丢失“ctrl-right”和“ctrl-left”的标准 Visual Studio 行为。

    Tools –> Options 打开 Visual Studio Options 窗口 展开环境并向下滚动到键盘显示包含的命令框中,输入“hump”。这将显示与 CamelHumps 相关的所有命令。 通过从列表中选择命令并在按快捷键文本框中输入键映射,将命令映射到您希望的键映射,然后单击分配

注意事项:

文本编辑器而不是全局分配映射。 确保 Resharper -> 选项 -> 编辑器 -> 编辑器行为中的 Use CamelHumps 选项关闭

详情请看:http://davidrcook.wordpress.com/2009/11/05/working-with-camel-case-in-visual-studio/

【讨论】:

你让我很开心。骆驼驼峰的完美解决方案可以是带有长标识符的大头针(任何使用 Eclipse 的人都会证明)【参考方案7】:

在 2008 年 11 月 25 日之后偶然发现此页面的任何人(不想为 ReSharper 或 CodeRush 不再提供免费版本)付费,以下免费扩展会添加此功能:Subword Navigation by Olle Westman

(或者,VSTricks 扩展在其漂亮的功能列表中包括子词导航。还有一个不同的 Subword navigation 扩展由 Lauri Vasama 创建,不要与此答案使用的 Olle Westman 混淆。)

子词导航项目页面状态:

在键盘绑定中查找 Edit.Subword 进行设置。

这是我在 Visual Studio 2019 中的设置方式:


    导航到工具>选项>环境>键盘

    Use new shortcut in 下,选择 文本编辑器

    Show commands containing 下,输入 Edit.Subword。这应该会弹出一个包含下面列出的命令的自动完成字段。

    选择以下要为其设置快捷键的命令之一。选择后,按照其余编号的步骤进行操作。然后返回 Step 4 设置另一个。 Edit.SubwordNext 向右移动骆驼箱 [Alt + Right Arrow] Edit.SubwordPrevious 向左移动驼峰 [Alt + Left Arrow]                                                                       Edit.SubwordNextExtend 选择右侧的驼峰式 [Alt + Shift + Right Arrow] Edit.SubwordPreviousExtend 选择左侧的驼峰式[Alt + Shift + Left Arrow]                                                                        Edit.SubwordDeleteNext 删除右侧的驼峰式 [Alt + Delete] Edit.SubwordDeletePrevious 删除左侧的驼峰式 [Alt + Backspace]

注意:将这些子词导航命令分配给这些新快捷键时,通过将它们设置为不同的键,预先保留您想要保留的任何现有快捷键功能。 不应与任何默认安装的快捷键冲突。


    Press shortcut keys 下,按 您的快捷键

    点击Assign并覆盖现有快捷方式

【讨论】:

感谢您的提醒!这很有效,并且是最开放的解决方案。 我指的是 2015 年及以后。正如后面提到的,我在 VS 2012 中使用了这个。我将在帖子中澄清。谢谢。 在提供设置细节方面特别出色的答案。我非常感谢 Next/PreviousExtend 上的解释 2015 年,我不得不覆盖 TextEditor.* 命令,而不是 Global.* 命令。 ALT+RIGHT 已经绑定到其他东西了。 @yanyankelevich 我刚刚在 VS2019 中对其进行了测试,并且可以正常工作。但是,我确实在扩展管理器中注意到,有 两个 扩展名为“子词导航”。您想要由 Olle Westman 创建的那个。我已经更新了我的答案以指定它并注意它在 VS2019 中有效。【参考方案8】:

创建此扩展程序就是为了做到这一点,就像在 Eclipse 中一样:

https://marketplace.visualstudio.com/items?itemName=maptz.camelcasenavigation

【讨论】:

【参考方案9】:

对于在 ~1.63 版本中寻找此功能的任何人 键绑定选项现在称为“cursorWordPart”,可以在键盘快捷键中轻松设置:)

【讨论】:

以上是关于按下 Ctrl 和光标键时让 Visual Studio 理解 CamelCase的主要内容,如果未能解决你的问题,请参考以下文章

按下项目按钮时让本机“共享表”拉起

visual studio 常用快捷键

从控制台(Ctrl-C)终止时让我的 PyQt 应用程序退出的正确方法是啥?

Visual Studio Code 设置透明背景图片

Visual Studio C++ 多行注释

在 Visual Studio Code (VS Code) 中将一段代码注释掉的两种方法