如何在Visual Studio 2012中使Intellisense不将文本替换为光标?

时间:2013-04-01 15:06:43

标签: visual-studio visual-studio-2012 intellisense

编程时我经常意识到我需要在已经输入的代码之前添加一些内容。例如,我输入变量的名称:

input[0]

然后我意识到我的数组是字符串类型,我需要转换它。所以,我移动到单词的开头(使用Ctrl-向左箭头)并开始输入

Convert.To|input[0]

用管道来显示我的光标位置。我从Intellisense得到一些建议,包括我正在寻找的ToInt32()方法。但只要我用Tab或Space确认这个建议,我就得到以下结论:

Convert.ToInt32(|)[0]

因此,从光标位置到单词结尾的文本被建议替换,这绝对不是我想要的。

此问题并非特定于VS 2012,可能是由于我已经安装了一些扩展,但我试图追求它的起源并没有产生任何结果。我安装了以下扩展:ReSharper,PowerCommands,Productivity Power Tools。

2 个答案:

答案 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设置中。

此后,光标后的字符不会被自动完成删除。