本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

Visual Studio Code 中的 Ruby

Ruby 是一种动态的、开源的编程语言,以其简单性和生产力而闻名。用其表达性和优雅的语法,Ruby 的哲学之一是让开发人员快乐。它通常与各种不同的框架一起用于网页开发,并用于脚本编写,允许在构建原型时快速迭代。

本主题详细介绍了在Visual Studio Code中使用Ruby LSP扩展设置和使用Ruby。

Ruby 扩展横幅

安装

通过版本管理器安装Ruby

虽然在某些操作系统(如 macOS 和某些 Linux 发行版)上默认安装了 Ruby,但我们建议使用版本管理器来访问较新的 Ruby 版本,例如 rbenv 在 macOS 和 Linux 上以及 rbenv 在 Windows 上。请按照 安装指南 进行操作。

注意:就像在机器上安装任何新的工具集一样,您需要确保重启终端/Commands提示符和VS Code实例,以便在平台的PATH变量中使用更新的工具集位置。

在 VS Code 中安装 Ruby LSP 扩展

您可以通过 VS Code 的扩展视图找到并安装 Ruby LSP 扩展 (⇧⌘X (Windows, Linux Ctrl+Shift+X)) 并搜索 'Ruby LSP'。

在扩展视图中的Ruby LSP扩展

我们将在本主题中讨论许多 Ruby LSP 的功能,但您也可以参考扩展的文档仓库

检查您的安装

安装后,在状态栏的语言状态项目中查看Ruby LSP服务器的状态。如果版本管理器已配置,它应显示适用于您项目的正确Ruby版本。服务器状态应显示正在启动或运行,而不是错误。

Ruby LSP 语言状态中心

该扩展生成一个.ruby-lsp文件夹自动与包含语言服务器 gem 的自定义包一起安装Ruby 语言服务器协议 (LSP)不需要任何配置。

默认情况下,该扩展会尝试自动检测您使用的Ruby版本管理器,并相应地使用正确的版本和路径。如果您想自定义此行为,请在您的用户设置中设置以下内容:

{
  "rubyLsp.rubyVersionManager": {
    "标识符": "rbenv"
  }
}

扩展将自动尝试更新Ruby 语言服务器协议 (LSP) 定期更新语言服务器 gem;如果您想强制执行此操作,请使用命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 执行 Ruby LSP: 更新语言服务器 gem.

如果您遇到任何问题,请参阅故障排除以获取下一步指导。

主要特点

导航和智能感知

Ruby LSP 提供了多个导航和 IntelliSense 相关功能,例如跳转到定义、悬停、工作区符号、文档符号、完成和签名帮助。

要了解更多关于使用 VS Code 快速浏览源代码的信息,请查看 代码导航.

镶嵌提示

Ruby LSP 能够显示关于代码中推断或隐含值的有用信息。在下面的示例中,你可以看到标准误差显示为在空的块中救援的隐式异常类救援呼叫。

显示带内嵌提示的Ruby程序

虽然内联提示对理解你的代码有帮助,但你也可以通过编辑器 > 内联提示: 启用 设置禁用该功能 (

编辑器.内联提示.启用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
) 或者使用以下方法仅禁用此功能针对 Ruby LSP:

"rubyLsp.enabledFeatures": {
    "inlayHint": false,
}

语义语法高亮显示

Ruby LSP 能够使用语义语法突出显示和样式,因为它对项目源代码有丰富的理解。

例如,它可以突出显示:

  • 方法调用始终一致,不与局部变量混淆。
  • 局部参数(如方法、块或lambda参数)在其存在的作用域内始终一致。

Ruby LSP 语义高亮

注意:此截图使用了 Ruby 扩展包 中包含的 Spinel 主题。主题必须使用 Ruby LSP 提供的信息,以便为 Ruby 文件提供丰富的突出显示。

要使用此功能,编辑器必须启用语义突出显示。

"editor.semanticHighlighting.enabled": ,

检查和格式化

默认情况下,Ruby LSP 通过与 RuboCop 的集成提供代码检查和格式化。你可以使用 ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) 或者通过命令面板运行 格式化文档 命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 或者在编辑器中的上下文菜单。

如果您的项目不使用RuboCop,Ruby LSP将使用SyntaxTree来格式化文件。

检查一个Ruby文件

你也可以在每次保存时运行格式化程序 (编辑器:保存时格式化),以便在你工作时自动保持你的 Ruby 代码正确格式化。要这样做,你必须启用保存时格式化。

"editor.formatOnSave"

Ruby LSP扩展还提供了一些使用格式的便捷完成。例如,它会自动续行注释行并自动关闭结束标记、管道或字符串插值花括号。要使用类型格式,请确保在编辑器中启用它,方法是:

"editor.formatOnType"

快速修复

当 linter 在你的源代码中发现错误和警告时,Ruby LSP 通常可以提供建议的快速修复(也称为代码行动),这些修复可以通过编辑器中的灯泡悬停来实现。你可以通过 ⌘.(Windows, Linux Ctrl+. 快速打开可用的快速修复。

快速解决代码检查违规问题

此外,代码操作小部件:包含附近的快速修复 (

editor.codeActionWidget.includeNearbyQuickFixes
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
) 是默认启用的设置,这将从⌘.激活最近的快速修复。(Windows, Linux Ctrl+.(命令 ID 编辑器操作快速修复),无论你的光标在那行的哪个位置。

该命令会突出显示将被快速修复、重构或修复的源代码。正常代码操作和非修复重构仍然可以在光标位置激活。

重构

除了快速修复,Ruby LSP 还通过 Code Actions 提供重构选项。例如,它可以单击将 Ruby 表达式提取到局部变量中。

提取到变量

调试

Ruby LSP扩展支持使用debug gem(Ruby的官方调试器)进行调试。或者,开发人员也可以安装VS Code RDBG扩展来获取调试功能。

以下文档是关于Ruby LSP的调试器客户端。请参阅RDBG的README 以了解如何配置它。

调试测试

Ruby LSP 在单元测试的顶部添加了 CodeLens 按钮,使您能够在测试资源管理器中运行示例,在新终端中运行它们或启动调试器。对于这些用途,不需要配置。

测试运行代码透镜

通过启动任务进行调试

要通过启动任务使用调试器,您需要在中创建调试配置launch.json文件。该配置允许您配置要执行的程序。

为了创建一个launch.json对于一个Ruby程序:

  1. 在调试视图中 (Mac: ⇧⌘D, Windows, Linux: Ctrl+Shift+D),选择“创建 launch.json 文件”链接。
  2. 这将显示一个下拉菜单,其中包含几种默认的启动配置类型。你可以选择第一个选项,但我们还会添加更多的配置。
  3. 我们现在可以编辑创建的.vscode/launch.json文件以添加更多方式来启动你的Ruby程序进行调试。

示例:

{
  "version": "0.2.0",
  "configurations": [
    // Launch the debugger for any given program. In this case, it will run the current file using Ruby
    {
      "type": "ruby_lsp",
      "name": "Debug",
      "request": "launch",
      "program": "ruby ${file}"
    },
    // Launch the debugger for the current test file
    {
      "type": "ruby_lsp",
      "request": "launch",
      "name": "调试测试文件",
      "程序": "ruby -Itest ${relativeFile}"
    },
    // 将调试器客户端附加到已经启动的带有调试器的Ruby进程
    // 服务器
    {
      "类型": "ruby_lsp",
      "请求": "附加",
      "名称": "附加到现有服务器"
    }
  ]
}

添加启动配置后,我们可以通过添加断点和执行启动任务来调试Ruby程序。

  1. 打开一个Ruby文件,并在编辑器的左侧空白处点击以设置断点。它应该显示为一个红色的点。

    编辑器左侧边缘的红色断点标记

  2. 通过选择 运行和调试 下的所需任务并点击开始调试按钮(默认键盘快捷键 F5)来开始调试。

    调试会话在断点处停止

下一步

这是一次简要的概述,展示了 VS Code 中的 Ruby LSP 扩展功能。欲了解更多信息,请参阅 Ruby LSP 文档,包括如何调整特定的 VS Code 编辑器 配置。

要了解 Ruby LSP 扩展的最新功能/错误修复,请参阅 monorepo 的 Releases 页面,该页面包括服务器和 VS Code 扩展的实现。

如果您有任何问题或功能请求,请随时在Ruby LSP的GitHub仓库中提交。

如果您想了解更多关于 VS Code 的信息,请尝试这些主题: