在 Sublime 中使用 Minted 时如何忽略 ShellCheck?

在 Sublime 中使用 Minted 时如何忽略 ShellCheck?

我想shellcheck在使用包编写 LaTeX 文档时忽略minted。我知道,使用时,shellcheck我可以通过放置在文档开头的一行来轻松全局忽略警告或错误。例如,# shellcheck disable=SC2148忽略未提供的错误shebang

注意,我在 Mac 上使用 sublime text。我还安装了和shellcheck。(因为 sublime 状态栏中也写了 ,我不知道这是否也起作用)chktexpygmentizechktex

一个最小的工作示例

\documentclass[a4paper]{article}
\usepackage{minted}
\begin{document}
\begin{minted}{shell}
  ls -al
\end{minted}
\end{document}

这抱怨没有提到shebang

如果我做

\documentclass[a4paper]{article}
\usepackage{minted}
\begin{document}
\begin{minted}{shell}
  # shellcheck disable=SC2148
  ls -al
\end{minted}
\end{document}

一切都运行正常。但由于我拥有众多minted环境,因此我想全局禁用错误。

编辑

当然,我也可以禁用shellcheck整个项目。这可以通过编辑相应的项目文件来完成

{   
    "folders":
    [
     ...
    ],
    "SublimeLinter":
    {
        "linters":
        {
            "shellcheck": {
                "disable": true
            }
        }
    }
}

不过,我正在寻找一种基于每个文件而不是基于项目来禁用它的方法。

答案1

这里看到的是两个善意功能之间的某种干扰。一方面,SublimeLinter-shellcheck将针对 Sublime 范围为 shell 脚本的几乎所有代码运行shellcheck。这允许 linter 支持非标准 shell 语法和嵌入在其他文件中的 shell 语法。另一方面,LaTeX 语法范围minted阻止到适当的语法,因此您可以在编辑文件时获得语法突出显示。

正如您所发现的,您可以使用该"disable"设置完全禁用更长的时间,但您还有其他几个选择。第一个是将设置"selector"从默认的更改"source.shell - source.makefile - source.shell.fish""source.shell - source.makefile - source.shell.fish - text.tex"。这将停止shellcheck在任何 TeX / LaTeX 文档上运行。另一个选项是将设置更改”excludes"为类似的东西"*/*.tex",这应该会阻止它在任何扩展名为的文件上运行.tex。这些设置中的任何一个都可以放在您放置设置的同一位置"disable"或用户设置中,等等。

相关内容