【问题标题】:VSCode "go to definition" not workingVSCode“转到定义”不起作用
【发布时间】:2016-05-20 08:35:00
【问题描述】:

我安装了带有 C/C++ 扩展的 Visual Studio Code 1.1, 打开我的 C++ 项目并尝试使用“转到定义”是徒劳的。

“转到定义”根本不起作用。 例如,转到类成员的定义:

int i = m_myVar;

(我用一个文件打开了一个更简单的项目,它正在为这个文件工作)

最后,我想要的是我的大项目的良好索引,有没有办法安装 Intellisense?

【问题讨论】:

    标签: c++ visual-studio-code


    【解决方案1】:

    我最近遇到了同样的问题,在尝试了所有我能找到的建议的解决方案但没有成功后,我找到了这篇文章:

    https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc

    基本上,我的项目变得太大,VS 代码不再能够跟踪所有文件,这弄乱了“转到定义”功能。

    按照链接上的步骤增加要跟踪的最大文件数后,问题得到解决。

    修正非常简单(在 Ubuntu 18.04 上测试):

    添加这一行:

    fs.inotify.max_user_watches=524288
    

    到文件末尾/etc/sysctl.conf

    保存后,运行以下命令:

    sudo sysctl -p

    希望这对其他人有用,这在过去几天一直困扰着我。

    【讨论】:

    • /etc/ 不是我的 VScode 安装目录中任何位置的目录...
    • 我的机器上除了 system32 文件夹外没有类似的目录。
    • @MrDysprosium /etc 是一个 linux 配置目录。 Windows 中可能有也可能没有类似的配置选项
    • 有办法在 Windows 上执行此操作吗?
    【解决方案2】:

    我相信 vscode 1.1(嗯,实际上是 1.1.1)+ C++ 扩展(cpptools)是我们目前所能获得的智能感知。

    您应该使用“打开文件夹”功能加载您的大项目,以使 vscode 了解其他文件。

    https://blogs.msdn.microsoft.com/vcblog/2016/03/31/cc-extension-for-visual-studio-code/ 警告让索引先完成(索引期间右下角的红色图标)并提及当前对源代码解析的限制。

    【讨论】:

    • 火红的平台图标,表示正在解析超过30分钟后变成红色。所以我根本没有解析。我的同事在他们的项目中遇到了同样的问题。
    • 我什至无法让这个“红色图标”出现 - 我已经在我的 c_cpp_properties.json 文件中添加了几个文件夹,但仍然没有骰子。 (在 Linux 上运行)
    • 别担心,这个功能甚至在 VS2017 pro 中都不起作用!
    【解决方案3】:

    我遇到了类似的问题,除了 Python 和 google 搜索解决方案时不断将我带回这篇文章,所以我想我会在这里发布我的解决方案,希望它可以帮助其他人。

    我正在通过 VScode Remote 处理远程集群,并且遇到了与原始问题类似的错误(所有“转到 ___”功能都不可用,甚至出现“太大而无法跟踪”错误),我想我有增加手表的数量,但最终没有帮助。

    我需要做的就是在远程 VScode 服务器上安装一个 python 解释器。这解决了我的问题。

    【讨论】:

      【解决方案4】:

      安装一些 VSCode 扩展后,它在我的笔记本电脑上也无法正常工作。我决定在管理员权限的情况下关闭并重新打开 VSCode,突然它解决了。

      【讨论】:

        【解决方案5】:

        我已经尝试解决这个问题很长时间了。最后,对我有用的只是重新安装 VSCode,然后安装最新的 C/C++ 扩展(v0.18.1)。然后,在 .vscode/c_cpp_properties.json 文件中的 includePath 下,添加包含所有头文件的包含文件夹。

        【讨论】:

          【解决方案6】:

          我尝试了这个帖子中提到的方法,但它们似乎都不适合我。一个对我有用的简单解决方案是我关闭了当前工作区并创建了一个新工作区,添加了我需要的文件夹(与旧工作区相同),并保存了新工作区。等待几分钟来建立索引,IntelliSense 现在可以找到定义。

          【讨论】:

            【解决方案7】:

            我在安装扩展 C/C++ 时遇到了类似的问题。我通过下载旧版本的扩展并升级到最新版本来解决它。不知何故,它解决了这个问题......

            【讨论】:

            【解决方案8】:

            我在 Ubuntu 20.04 上使用 VSCode 1.52.1。

            就我而言,无论出于何种原因,c_cpp_properties.json 已在 ~/.config/Code/User/settings.json 中设置为 Disabled

            手动将其更改为Enabled 解决了问题。

            【讨论】:

              【解决方案9】:

              只是通知如果以上都不起作用 在我的情况下,我在我的 VS 代码中使用了 Kite 扩展,我只是禁用了它并且它起作用了。我认为风筝扩展正在阻止此功能。

              【讨论】:

                【解决方案10】:

                如果您的 PC 上有多个版本的语言,请在 VScode 中指定您正在使用的确切语言(在我的情况下,我使用的是 Python,因此我必须在 VS Code 中指定 python 解释器的版本)

                如果你无论如何都做不到,那么卸载所有其他你不使用的版本,然后如果你去 VS Code,它会询问要使用的版本,你只有一个版本,所以当您选择版本时,“转到定义”将被激活。

                【讨论】:

                  【解决方案11】:

                  我在使用 OpenJDK 版本 11(openjdk-11-jdk in apt)的 Ubuntu 20.04 上遇到了类似的 java 问题。起初我没有安装JRE,所以我安装了它,它仍然无法工作。

                  之后,我转到CTRL + SHIFT + P菜单,然后转到Java: Configure Java Runtime,在Java Tooling Runtime选项卡中看到/usr/lib/jvm/java-11-openjdk-amd64被选中,将其更改为/usr/lib/jvm/java-1.11.0-openjdk-amd64只是为了看看它是否有效,并在重新启动后做到了。我不确定这是为什么,但我希望它可以帮助别人。

                  【讨论】:

                    【解决方案12】:

                    对于 python,请确保您的 code analysis settings 是正确的。在我的情况下,languageServer 被意外设置为“无”。将其恢复为“默认”或“pylance”就可以了。

                    【讨论】:

                      猜你喜欢
                      • 2019-11-04
                      • 1970-01-01
                      • 2022-01-06
                      • 2016-08-10
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-02-05
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多