如何避免Visual Studio自动完成覆盖下一个单词

37

我在Visual Studio中遇到了一个非常烦人的问题。(我的版本是2010,我安装了ReSharper和VsVim,但我认为这并不重要。) 当我在一些现有代码的开头添加文本时,自动完成会喜欢覆盖部分已有代码。

以这段示例代码为例:

initial code example

当我开始在 string.Format 的开头插入一些代码时:

enter image description here

然后我使用Tab来自动完成时,它会覆盖 string,而我想要的是让自动完成的代码插入到 string之前:

enter image description here

我不希望它自动删除我正在自动完成之后的文本。如果我想要删除文本,我可以非常容易地自己删除它(特别是使用 VsVim)。有没有办法阻止这种行为?我总是在绕着它工作。


7
我也很想知道如何解决这个问题。这经常发生,非常令人恼火。 - Chris Kentfield
@ChrisKentfield,我们现在有一个答案了! - Keith Pinson
1
这个问题在vs2022中还没有解决。 - vainquit
3个回答

16

使用 Reshaper 2018.3,我发现以下是如何禁用你遇到的行为:

进入 Resharper -> 选项 -> 环境 -> 智能感知 -> 完成功能字符

对于选项 Tab 键,选择默认的替换而非 插入


13

尝试使用EnterSpace代替Tab


2
你刚刚让我的生活变得更美好了。我想知道是否有一种方法可以将它们重新映射为Tab键...? - Keith Pinson
2
我有VS2013,但是无论是回车还是空格都不能防止它覆盖。 :( - Nick
1
我撤回我之前的评论。您需要使用Ctrl+Alt+Space切换完成模式,或者转到编辑 > 智能感知 > 切换完成模式。 - beruic
对我来说不太好用,当我只输入单词的一部分并按下空格或回车键时,实际上我会输入一个空格或换行符。只有当我开始使用箭头选择建议时才有效,所以下一个答案对我更好。 - Yuri Kovalenko

1
我在Visual Studio 2015中解决了这个问题(使用resharper ultimate 2016.3.1),方法是禁用Resharper IntelliSense。
请按照以下步骤操作:
1. 进入Resharper选项 2. 选择“环境”选项卡 3. 选择“IntelliSense”选项卡 4. 在“General”下拉菜单中选择“Visual Studio”。

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