防止修改 Sublime Text 中的行尾?

Prevent modification of line endings in Sublime Text?

我正在处理具有不同行尾的文件(unix 和 windows)。 我意识到我可以通过 "default_line_ending" 设置将 SublimeText 配置为使用一个或另一个,但是我怎样才能让它 自动 对给定文件使用正确的类型(意思是不编辑时更改文件中的行结尾)。

Sublime 将检测文件中使用的行结尾并继续使用它(但请参阅下文),因此例如,如果您打开一个 Unix 文件和一个 Windows 文件,其中的每一个将使用它们各自的行尾保存回磁盘,而无需执行任何特殊操作。

如果您使用 show_line_endings 设置,Sublime 会在状态栏中向您显示当前文件正在使用(或将使用)结尾的行类型;单击它会显示一个菜单,让您选择一个新行).如此处所示,它默认处于关闭状态。

// Display line endings in the status bar
"show_line_endings": false,

就是说,如果您打开的文件只有一行,上面没有行终止符,则行尾默认为 default_line_ending 设置中的值,这可以使它出现好像 Sublime 没有正确检测到正在使用的行结束。事实上问题是,因为 根本没有 行结束字符,所以它无法确定您打算打开哪种文件,只能下降回到默认值。

如果这是问题所在,您可以通过更改此设置的默认值来缓解它:

// Set to true to ensure the last line of the file ends in a newline
// character when saving
"ensure_newline_at_eof_on_save": false,

启用此设置后,Sublime 会确保文件的最后一行有一个行终止符,这将允许它在您下次打开它时正确检测到合适的文件类型。第一次保存单行文件时,您可能需要先更改默认终止符以确保使用正确的终止符(这就是上面引用的设置派上用场的地方)。

这样做的一个潜在缺点是,它会使您的所有文件至少显示两行,以确保其中有一个行终止符,这可能是也可能不是问题。

否则,如果这些文件具有非常具体的名称,则可能会创建一个插件,该插件会在加载时或保存之前翻转行结束设置。

需要注意的是,Sublime 不支持 的一件事是混合行结尾的文件;将此类文件保存回磁盘时,所有行终止符都将标准化为当前设置的行终止符。那是因为 Sublime 规范化了内存中的数据,并没有记录每一行之前的结尾。