如何通过使用Visual Studio + ReSharper禁用不需要的自动完成功能?

35

我正在使用 Visual Studio 2010 和 ReSharper 5。

我将其定义在一个 .cs 文件的顶部。

#if X86
using size_t = System.Int32;
#else
using size_t = System.Int64;
#endif

我可以使用 size_t,并且知道它是本机整数,如果编译为 32 位程序集,则为 32 位,如果编译为 64 位程序集,则为 64 位。(对于那些好奇的人,替代方案是始终使用 Int64,或在运行时根据 IntPtr.Size == 4 进行分支,并拥有两个版本的代码。我更喜欢这种解决方案。)

然而,如果我键入 size_t 并按下空格,它会自动转换为 Int64(如果定义了 X86,则为 Int32)。显然这是不可取的。

我进入 ReSharper 选项,然后到 Environment \ Intellisence \ Completion behavior 并禁用“Automatically complete single item with:”下的所有复选框。

但仍然发生这种情况,还有其他什么可以尝试吗?


2
可能听起来有点老套,但是……你试过关掉再打开吗?说真的——尝试进行更改,关闭VS并重新启动计算机。 - Only Bolivian Here
1
不是答案,但你应该使用IntPtr来表示大小... - Thomas Levesque
IntPtr适用于指针,但不适用于指针的位运算和算术运算(例如,您无法找到两个指针之间的差异)。由于我在指针中使用了底部3位来存储信息,因此我需要一个与指针大小相同的整数类型来执行位运算。 - Eloff
5个回答

31

我遇到了类似的问题(使用 VS2013 和 Resharper8.2)。

为了阻止不必要的自动完成:每次键入“空格”时,我需要在 VS 和 R# 选项中都禁用 IntelliSense 自动完成 “空格”:

  1. VS > 工具 > 选项 > 文本编辑器 > C# > IntelliSense > “按下空格键提交” 复选框
  2. VS > Resharper > 选项 > 环境 > IntelliSense > 完成字符 > C# “在空格上完成” 复选框

干杯!


2
谢谢。在我的VS 2015中有效。只需要执行resharper选项。这让我疯狂了。 - Architekt
5
我使用VS 2017,看起来复选框已经移动或删除了。我有点想打人……但是,Malagur的答案对我有用,我仍然可以使用Tab键自动完成。 - donutguy640

28

一个解决方案是切换到智能感知建议完成模式。 切换的默认快捷键为Ctrl+Alt+Space。在建议模式下,只有当您明确选择要更改为的值时,它才会更改您输入的内容。 您可以在这里了解更多信息:

http://blogs.msdn.com/b/zainnab/archive/2012/05/01/9943045.aspx

在VS2017菜单层次结构中,建议模式可以在以下位置找到:

Edit -> Intellisense -> Toggle Completion Mode

此外,当启用建议模式时,下面的按钮会有可视化指示(也可以通过单击该按钮启用/禁用):

Visual Studio 2017建议模式按钮


1
我正在使用msvs 2017,但这个切换键没有起作用。我仍然被卡在自动完成上。 - Elliott
我在使用VS 2019,这个选项确实存在,但是被禁用了。真是让人恼火。 - Taylor Brown

6

默认关闭 IntelliSense 选项

在“工具”菜单上,单击“选项”。

选择“文本编辑器”文件夹。

选择您想要自定义 IntelliSense 的语言文件夹。

在“常规”属性页面中,清除您不想要的 IntelliSense 功能的复选框:

“自动列出成员”适用于“列表成员”

“参数信息”适用于“参数信息”


3
您可以使用Esc键取消当前的Intellisense建议。

3
在VS 2019和ReSharper 2020中切换完成模式不能解决问题 - 当按下空格键时,建议会被应用。要使其工作,必须转到:
扩展 -> ReSharper -> 选项... -> IntelliSense -> 完成字符
并为相应的编程语言取消选中在空格时完成

ReSharper IntelliSense settings


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