fortran在vscode中用好,关键在于正确配置gfortran、python3和fortls三者路径与权限:需确保二者均在系统path中,fortls必须手动pip安装并显式指定路径,否则语法高亮、跳转定义等功能失效;调试须用-g编译并配置cppdbg类型的launch.json。

Fortran在VSCode里能用好,关键不是装几个插件,而是把gfortran、python3、fortls这三样东西的位置和权限理清楚——缺一个,语法高亮就失效,Ctrl+Click跳不到定义,甚至Language Server Starting…卡死不动。
确认gfortran和python3都在PATH里
VSCode的Fortran插件不自带编译器或语言服务器,它只是调度器。终端里能跑通,不代表VSCode GUI启动时也能调到。
- 在系统终端执行
gfortran --version和python3 --version,必须都输出版本号;任一失败,插件直接退化为纯文本编辑器 - Windows用户:MinGW-w64安装后,要把
mingw64in(比如C:msys64mingw64in)加进**系统级**PATH,不是只改当前终端的PATH - macOS用户:如果用
pyenv管理Python,别让python3指向/usr/bin/python3(系统自带、无pip),要确保which python3返回的是你用pip install fortls的那个环境
手动装fortls,别信“自动安装”
Modern Fortran扩展说“首次打开.f90文件会自动安装fortls”,但实测在Linux/macOS非root环境、WSL、Windows用户目录含空格等场景下,静默失败且不报错。
- 终端运行:
pip install fortls;若权限报错,改用pip install --user fortls - 验证是否可用:
fortls --version;如果提示command not found,说明pip安装路径没进PATH:
• Linux/macOS:检查~/.local/bin是否在PATH中
• Windows:检查%APPDATA%PythonPython3xScripts(如C:UsersAliceAppDataRoamingPythonPython311Scripts) - VSCode设置里显式指定路径比依赖“auto”更稳:
"fortran.fortls.path": "/home/alice/.local/bin/fortls"(Linux/macOS)"fortran.fortls.path": "C:\Users\Alice\AppData\Roaming\Python\Python311\Scripts\fortls.exe"(Windows)
调试前必须配launch.json,Code Runner不管用
默认的Code Runner插件用gfortran -o $fileNameWithoutExt $fileName编译,不带-g,GDB就看不到源码行和变量名——断点设了也白设。
- 项目根目录建
.vscode/launch.json,类型选cppdbg,不是fortran(没有这个type) - 确保编译命令生成带调试信息的可执行文件,例如:
• 先用gfortran -g -o main main.f90手动编译一次
•program字段指向该二进制,如"${workspaceFolder}/main" - 必须装C/C++扩展(Microsoft官方),否则
cppdbg类型不可用;Eclipse CDT或CodeLLDB不能替代
大型项目要调fortls参数,否则符号解析慢或漏
含几十个模块、跨目录use语句的科学计算项目,fortls默认配置容易跳转失败或补全缺失——不是代码写错了,是语言服务器没同步完或没扫描到依赖路径。
- 启用增量同步和小写内建函数识别:
"fortran.fortls.extraArgs": ["--incremental_sync", "--lowercase_intrinsics"] - 如果模块分布在
src/、lib/、include/多个目录,fortran.linter.includePaths只影响语法检查,不影响fortls符号索引;得靠--project_dir或--source_dir参数告诉fortls从哪开始扫:"fortran.fortls.extraArgs": ["--source_dir=src", "--source_dir=lib"] - fortls内存不够会崩溃,尤其Windows WSL下默认只给512MB;加
--max_memory=2048防卡死
最常被忽略的一点:fortls启动失败时,VSCode底部状态栏只显示“Language Server Starting…”几秒就消失,没有任何错误弹窗。真要查问题,得开VSCode的Output面板,选Fortran Language Server频道看原始日志——那里才告诉你到底是ModuleNotFoundError: No module named 'toml',还是Permission denied。











