编程时我经常意识到我需要在已经输入的代码之前添加一些内容。例如,我输入变量的名称:
input[0]
然后我意识到我的数组是字符串类型,我需要转换它。所以,我移动到单词的开头(使用Ctrl-向左箭头)并开始输入
Convert.To|input[0]
用管道来显示我的光标位置。我从Intellisense得到一些建议,包括我正在寻找的ToInt32()方法。但只要我用Tab或Space确认这个建议,我就得到以下结论:
Convert.ToInt32(|)[0]
因此,从光标位置到单词结尾的文本被建议替换,这绝对不是我想要的。
此问题并非特定于VS 2012,可能是由于我已经安装了一些扩展,但我试图追求它的起源并没有产生任何结果。我安装了以下扩展:ReSharper,PowerCommands,Productivity Power Tools。
答案 0 :(得分:1)
如果要在标识符之前输入不相关的表达式,请在开始键入新表达式之前添加空格。这将阻止完成替换现有标识符。
例如,如果|
标记了插入符号,则以下方案可以避免您遇到的问题。
Convert.To| input
此代码完成功能旨在防止插入错误的标识符。如果Visual Studio的行为与我所知道的其他IDE一样,使用原始示例中的代码完成功能将导致插入ToInt32input
,这将永远无效。
如果您对此功能的其他想法感兴趣,我将其描述为 Extend (Visual Studio的默认设置)和 No-extend (默认为我的博客文章Code Completion filtering, selection, and replacement algorithms中的NetBeans,Eclipse和其他模式)。
答案 1 :(得分:0)
两年后回答。但它可能仍然对某些人有用。
VS2015(可能在VS2012中也有效)对我有帮助的是将空格字符添加到“会员列表提交字符”列表中。在Intellisense设置中。
此后,光标后的字符不会被自动完成删除。