我可以根据文件类型设置VS Code默认的行尾符吗?

15
在 Windows 上处理带有 CRLF 结尾符的 .sh 文件,当在 Linux Docker 容器中运行时会导致问题。我是否可以让 VS Code 始终使用 LF 来处理某些特定文件类型(如.sh),同时对于其他所有文件仍然使用 CRLF?
我只在设置中找到了全局的 "files.eol": "\r\n" 选项。
我知道你可以在底部工具栏上针对每个文件更改这个设置,但我想让它成为所有 .sh 文件的默认设置。

1
最好对于所有文件类型使用 LF。除了一些愚蠢的程序,如Notepad之类外,在所有操作系统上的编程和纯文本编辑器中都将其处理为换行符。 - axiac
3个回答

20

在您的设置窗口中,转到

设置>文本编辑器>文件>Eol选项。您将在那里找到以下可用选项。

- \n
- \r\n
- auto (default)

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

选择您的选项并保存。

VS Code:版本1.13.3


1
这并没有回答“基于文件类型”的要求。这仍然是关于此设置的GitHub问题。(github (dot) com/Microsoft/vscode/issues/34876) - Eliasar

11

你可以使用 EditorConfig

安装 editorconfig 扩展,然后在你的项目根目录下添加一个名为 .editorconfig 的文件,并将以下内容复制到文件中:

[*]
end_of_line = crlf

[*.{sh}]
end_of_line = lf

但是就像@axiac所说,我建议始终使用lf...


11

编辑:我对这个答案有点“过早”了。但是自v1.40起,它现在可以正常工作。请参见https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_40.md#fileseol-per-language


你可以在vscode中不使用扩展程序来完成此操作。您可以制作特定于语言的设置:

在命令面板中,搜索“配置特定于语言”,选择它并从语言选项中选择“shellscript”:

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

"[shellscript]": {

},

现在添加你想要应用到 shell 脚本文件的任何内容(并不是所有设置都适用于此,但大多数设置都可以):

"[shellscript]": {
    "files.eol": "\n"
},

非常重要

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


2
这给了我一个错误提示:“未知标识符。使用语言标识符”,并且无法工作。然而,在 GitHub 上有一个问题要添加此功能。 - Ullallulloo
1
你说得对 - 但现在它已经更新到v1.40了。我怎么知道的?哈哈。 - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接