我正在处理具有不同行结尾的文件(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规范化了内存中的数据,并没有记录每行以前的结果。