VSCode Intelligence C扩展没有提示有用的词
VSCode Intelligence C extension does not suggest useful words
我已经开始使用 VSCode 了。我在 C 中编码,所以我安装了推荐的 C/C++ 插件,它提供了 de Intellisense 完成功能。我还添加了 VIM 扩展和一些其他小东西。
我注意到 Intellisense 建议很好地推荐宏、函数名称、字段等...但它们从不建议简单的单词作为变量或参数,这些单词确实在我正在编写的代码的密切上下文中。
本机 VSCode 自动完成功能可以做到这一点。
我尝试了几种方法:
- 启用功能:
"editor.wordBasedSuggestionsMode": "currentDocument",
但是效果没什么,即使 Intellisense 结果无效,我也没有得到任何基于单词的建议。我认为当 Intellisense 找不到任何匹配项时,此功能将查询基于本地单词的建议。
- 禁用 Intellisense 建议:
C根据设置注释,这应该使编辑器使用 VSCOde 基于单词的完成。但是使用此设置我从来没有得到任何自动完成建议。
- 完全禁用 C/C++ 扩展。在这种情况下,我最终有效地获得了基于 wordbased 的本地 VSCode 建议,但当然我也失去了其他插件优势,如大纲、符号搜索、语法帮助等...
我想知道:
- 这是代码完成的预期 Intellisense 行为还是错误?
- 除了符号和宏之外,是否有任何方法可以使智能感知建议上下文词?
- 有没有办法只禁用扩展的自动完成功能并使 'native' VSCOde 代码完成工作?我希望通过“C_Cpp.autocomplete”得到这样的行为:“禁用”,但由于我没有看到这样的结果,我想知道这是否是扩展的错误。
用一些图片更新了评论:
事实上,现在我注意到这种行为有点令人困惑。在上面的示例中,我从头开始编写 functionA,在这种情况下,我确实对局部变量和参数变量有建议。但是对于已经存在的项目函数 (ApplyGainControl) 请注意,我正在尝试输入 gain_word_current 参数,但我没有得到任何建议。当我尝试局部变量时也是如此。我在输入 gain 时确实得到了一些,但建议与关闭上下文不同。
所以现在我想知道当我打开一个现有的文件夹项目或当我在 VSCode 中写入新内容时,这些建议是否有任何不同。我不知道建立建议数据库的底层行为。
您有两种选择来控制建议:
正如我在评论中提到的,我不知道你是否完全没有得到任何建议。但如果您对这些建议不满意,链接中描述的选项可能会有所帮助。
一些实验:
标记后的评论显示建议的第一个条目 window。
#include <stdint.h>
void foo(int i, int in, int *intp, int *int8p, int interrupt)
{
i //int i
in //int in
int //int (followed by the standard fixed sized integers)
intp //int *intp
int8 //int8_t, the second entry: int *int8p
inte //int interrupt
}
注意:editor.suggest.localityBonus被激活,editor.suggestSelection是默认值,似乎是 recentlyUsed.
我已经开始使用 VSCode 了。我在 C 中编码,所以我安装了推荐的 C/C++ 插件,它提供了 de Intellisense 完成功能。我还添加了 VIM 扩展和一些其他小东西。 我注意到 Intellisense 建议很好地推荐宏、函数名称、字段等...但它们从不建议简单的单词作为变量或参数,这些单词确实在我正在编写的代码的密切上下文中。
本机 VSCode 自动完成功能可以做到这一点。 我尝试了几种方法:
- 启用功能: "editor.wordBasedSuggestionsMode": "currentDocument", 但是效果没什么,即使 Intellisense 结果无效,我也没有得到任何基于单词的建议。我认为当 Intellisense 找不到任何匹配项时,此功能将查询基于本地单词的建议。
- 禁用 Intellisense 建议:
C根据设置注释,这应该使编辑器使用 VSCOde 基于单词的完成。但是使用此设置我从来没有得到任何自动完成建议。
- 完全禁用 C/C++ 扩展。在这种情况下,我最终有效地获得了基于 wordbased 的本地 VSCode 建议,但当然我也失去了其他插件优势,如大纲、符号搜索、语法帮助等...
我想知道:
- 这是代码完成的预期 Intellisense 行为还是错误?
- 除了符号和宏之外,是否有任何方法可以使智能感知建议上下文词?
- 有没有办法只禁用扩展的自动完成功能并使 'native' VSCOde 代码完成工作?我希望通过“C_Cpp.autocomplete”得到这样的行为:“禁用”,但由于我没有看到这样的结果,我想知道这是否是扩展的错误。
用一些图片更新了评论:
事实上,现在我注意到这种行为有点令人困惑。在上面的示例中,我从头开始编写 functionA,在这种情况下,我确实对局部变量和参数变量有建议。但是对于已经存在的项目函数 (ApplyGainControl) 请注意,我正在尝试输入 gain_word_current 参数,但我没有得到任何建议。当我尝试局部变量时也是如此。我在输入 gain 时确实得到了一些,但建议与关闭上下文不同。
所以现在我想知道当我打开一个现有的文件夹项目或当我在 VSCode 中写入新内容时,这些建议是否有任何不同。我不知道建立建议数据库的底层行为。
您有两种选择来控制建议:
正如我在评论中提到的,我不知道你是否完全没有得到任何建议。但如果您对这些建议不满意,链接中描述的选项可能会有所帮助。
一些实验:
标记后的评论显示建议的第一个条目 window。
#include <stdint.h>
void foo(int i, int in, int *intp, int *int8p, int interrupt)
{
i //int i
in //int in
int //int (followed by the standard fixed sized integers)
intp //int *intp
int8 //int8_t, the second entry: int *int8p
inte //int interrupt
}
注意:editor.suggest.localityBonus被激活,editor.suggestSelection是默认值,似乎是 recentlyUsed.