VSCode 配置 Fortran 开发环境

VSCode安装Modern Fortran插件及Fortls

VSCode

VSCode下载,插件,编辑等基础功能参考 VSCode基础功能

Modern Fortran插件

  • 具体帮助查看 Modern Fortran - VSCode Marketplace
  • 主要功能包括
    • 语法突出显示
    • 集成 fortls,支持 GoTo, Find, Peek, Hover, Auto-completion
    • 静态代码检查 (Linting),支持 gfortran, ifort, nagfor
    • 代码格式化 findent, fprettify
    • 代码块 snippets
    • 代码调试,支持断点、多线程调试、调用堆栈、步进
  • 该插件依赖 Cpp 基础插件 C/C++

静态代码检查

  • 指定静态代码检查编译器及其路径

静态代码检查编译器设置

  • Linting 可以在撰写代码时进行编译器错误和警告检测,无需编译代码

静态代码检查


Fortls

安装

  • 主页 [https://fortls.fortran-lang.org/]

  • Fortran language servers 早期基于 Language Server Protocol (LSP) 项目开发

  • fortls 依赖 python 3.7+ 环境

  • 在线安装

    • 直接使用安装命令 pip install fortls
    • 安装完成后在 python 数据路径的脚本 C:\Users\UserName\AppData\Roaming\Python\Python39\Scripts 目录下出现可执行文件 fortls.exe
    • 将其所在路径 C:\Users\UserName\AppData\Roaming\Python\Python39\Scripts\fortls.exe 添加至 Modern Fortran 插件设置中
  • 离线安装

    • 下载安装包 [https://github.com/fortran-lang/fortls]
    • 通过 python 命令将程序安装到环境中 python setup.py install
    • 安装成功后在 python 安装路径的 ..\Python39_64\Scripts 目录下出现可执行文件 fortls.exe
    • 将其所在路径添加至 Modern Fortran 插件设置中
  • vscode 外,fortls 还支持 Atom, Sublime Text, neovim, Vim, EMACS, Visual Studio 2017, Kakoune 等编辑器,参考 [https://fortls.fortran-lang.org/editor_integration.html]

  • 指定 mod 文件输出路径

指定 mod 文件输出路径

功能

  • Auto-Completion
    • IntelliSense功能之一,编写代码时可自动实现代码提示和补全
    • 支持类型包括 变量、函数、子程序、类、接口、模块、代码块
    • VSCode IntelliCode功能可基于AI推荐最可能匹配的代码提示

自动补全演示

  • Hover
    • 悬停预览,鼠标悬停在 变量/函数等 符号上时会出现提示信息
    • 提示信息基于 DoxygenFORD 文档样式生成,见 注释格式

悬停演示

  • Rename

    • 选择 变量 后按快捷键 F2 可修改变量名
    • fortls 会自动识别变量定义范围
  • Symbols

    • 指模块、子程序、函数、类等
    • 在整个文档中搜索符号并显示在侧边栏 outline
    • 支持 查找定义 Definition 实现 implementation 引用 Reference
    • 支持 内联编辑器 Peek
    • 使用快捷键 Alt + Shift + F12 查看所有引用

符号大纲

  • Diagnostics
    • 简单语法检查

语法检查

注释格式

  • fortls 支持 DoxygenFORD 文档样式
    • 一般注释 ! 不会生成文档
    • Doxygen 使用 !! !> !< 注释文档内容
    • FORD 使用 !! !> !< !* !| 注释文档内容
类型 符号 功能
docmark !! 注释文档内容
premark !> 标记多行注释的第一行
docmark_alt !* 多行文档块
predocmark_alt !| 多行文档块
blkmark !... 注释代码块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
!================================ SUM_TEST ========================70
!
!> Subroutine to calculate the sum of two numbers.
!! Two numbers are real.
!
!* Create for test.
!
!==================================================================70

subroutine sum_test(num1, num2, num_sum)

real, intent(in) :: num1 !< number 1
real, intent(in) :: num2 !< number 2
real, intent(out) :: num_sum !< sum

continue

!...Calculation

num_sum = num1 + num2

!...Print result

write (*,*) num_sum

end subroutine sum_test
  • 子程序提示

子程序提示

  • 函数提示

函数提示

  • 变量提示

变量提示

  • 代码折叠
    • 全部折叠 Ctrl + K + 0
    • 全部展开 Ctrl + K + J
    • 按级折叠 Ctrl + K + 1/2/3 ...
    • 折叠当前级 Ctrl + K + [
    • 展开当前级 Ctrl + K + ]

代码折叠

0%