ReSharper有一个很好的功能,称为“扩展选择”:通过反复按CTRL+W
(我认为这是默认设置),您可以从当前的脱字符位置选择越来越多。首先它是一个词,然后越来越多的单词,一行,内部然后外部块的行(例如一个if块),然后功能等...有没有办法在Vim中模拟ReSharper的“扩展选择”功能?
基本上,通过重复按下组合键,你最终可以选择整个文件。我相信至少你们中的一些人会熟悉它。
我刚刚开始学习vim的所有错综复杂,我没有足够的经验来看看如何在Vim中实现这样的事情(尽管我认为这是可能的)。所以我的问题是针对Vim的大师:这可以做到,怎么做?
更新:有点背景故事。我一直在和前任老板谈论Vim的所有好处,他认为这很好。他唯一的问题是:它有“扩展选择”吗?我的问题到目前为止是没有。所以,如果有人知道答案,我终于会赢得一场讨论:P(也许创建一个新的Vim转换器
令人惊讶的是,在这里没有人回答认识到需要适当的(部分)解析器。 Resharper在代码的逻辑模型之上实现了这个(很棒的)功能:代码DOM。这也是使重构能够处理所做选择的原因。没有合适的解析器,你会选择“事物”,但不是适当的(子)表达式。后者会很有用,但目前Vim不支持_That。除非你指望Lisp支持:`vabababo2k`对lisp_来说是完美的:) – sehe 2011-09-06 13:54:08
@sehe:当然,你是完全正确的。自从我问这个问题以来,我一直在想这个问题(好像很久以前!),并意识到,即使我以某种方式设法创建此功能,它将只适用于特定语言或一族语言。太糟糕了,不是吗? :) – 2011-09-07 17:52:23
我也一直在琢磨这个。我对90%的解决方案感到满意(我现在可以手动对Vim进行非常快速的重构)。然而,“可用的”子表达式匹配选择扩展器真的是我的第一梦想特征。我确信很有可能提出一个解析器,它将为C#,Java,C++和C提供DoTheRightThing;我期望的唯一粘性边缘情况是C#与C++ 0x lambdas。所以我可能会把它们留出一段时间(并确保它是可插拔的)。我仍然在决定使用什么,因为我有种恶意的vim脚本。我倾向于python,但厌倦了排除用户基础的问题 – sehe 2011-09-07 19:40:12