我可以根据文件类型设置 VS Code 默认 EOL 吗?

ksp*_*rin 12 visual-studio-code

.sh如果在 Linux Docker 容器中有 CRLF 的 EOL,则在 Windows 上使用文件会导致在 Linux Docker 容器中运行它们时出现问题。我是否可以让 VS Code 始终与 LF 一起用于特定文件类型,例如.sh同时仍将 CRLF 用于所有其他类型?

我只"files.eol": "\r\n"在设置中找到,但这是全局的。

我知道您可以在每个文件的底部工具栏中更改此设置,但我希望这是所有.sh文件的默认设置。

Ari*_*que 11

在您的设置窗口中,转到

Settings > Text Editor > Files > Eol选项。您可以按照那里的可用选项进行操作

- \n
- \r\n
- auto (default)
Run Code Online (Sandbox Code Playgroud)

这里\n代表LF,\r\n代表CRLF,auto使用操作系统特定的EL操作符。

选择您的选项并保存。

VS 代码:版本 1.13.3


Chr*_*isR 7

您可以使用EditorConfig

安装editorconfig 扩展,然后.editorconfig在项目的根目录添加一个文件:

[*]
end_of_line = crlf

[*.{sh}]
end_of_line = lf
Run Code Online (Sandbox Code Playgroud)

但正如@axiac 所说,我建议始终使用lf...


Mar*_*ark 7

编辑:我对这个答案有点“过早”。但它现在从 v1.40 开始工作。见https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_40.md#fileseol-per-language


您可以在没有扩展名的情况下在 vscode 中执行此操作。您可以进行特定于语言的设置:

在命令面板中,搜索“ Configure language specific”,选择它并shellscript从语言选项中选择“ ”:

这将在您的设置中创建以下内容:

"[shellscript]": {

},
Run Code Online (Sandbox Code Playgroud)

现在添加任何你想应用到 shellscript 文件的东西,就像(不是所有的设置都可以在那里工作,但大多数都可以):

"[shellscript]": {
    "files.eol": "\n"
},
Run Code Online (Sandbox Code Playgroud)

非常非常重要

行尾序列用于新文件。对于现有文件,始终保留现有的行尾序列。要更改现有文件的行尾顺序,请使用更改行尾顺序命令。

  • 这给了我错误“未知标识符。使用语言标识符”并且不起作用。[但是,GitHub 上存在添加此功能的问题。](https://github.com/Microsoft/vscode/issues/34876) (2认同)