固定Sublime Text 2行尾吗?


177

这是我的Settings - User配置:

{
    "auto_indent": true,
    "color_scheme": "Packages/Color Scheme - Default/Twilight.tmTheme",
    "default_line_ending": "LF",
    "detect_indentation": true,
    "font_size": 10.0,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_to_bracket": false,
    "smart_indent": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": true,
    "trim_automatic_white_space": true,
    "use_tab_stops": true
}

default_line_ending选项的评论说: 评论default_line_ending选项

当我创建一个新文件时,我检查在这里结束的行:

检查行尾

如您所见,它仍然是Windows ...有什么想法吗?


您是否尝试过单击“ Unix”,然后关闭然后重新打开?
Preet Kukreti 2012年

@PreetKukreti是的。重新打开后,再次是“ Windows”。它仅适用于当前文件,不适用于新文件。
mintobit

1
@ an1zhegorodov您之前保存过文件吗?这对我
有用

1
是的 保存文件后,它也为我工作。
皮埃尔·吉尔伯特

Answers:


199

评论指出

// Determines what character(s) are used to terminate each line in new files.
// Valid values are 'system' (whatever the OS uses), 'windows' (CRLF) and
// 'unix' (LF only).

您正在设定

"default_line_ending": "LF",

你应该设置

"default_line_ending": "unix",


1
我有同样的问题,但是我设置正确"default_line_ending": "unix",我不知道为什么这不起作用!它让我生气!我研究了一点,显然它没有有用的修复。
acrespo

@acrespo您确定它没有被另一个首选项文件覆盖吗?Sublime有很多:)-如果您指定了一种以语法特定的首选项结尾的行,它将覆盖用户首选项,而后者又将覆盖全局首选项
Leigh

10
设置“ default_line_ending”:“ unix”,可以在新文件上正常工作..但是不适用于现有(旧)文件。有谁知道如何改变这种行为?
占卜者

11
这只能手动完成,如果是自动的,这将非常有帮助。您可以按视图->行尾-> Unix @soothsayer
A Star

5
@soothsayer,对于现有文件,选择所有文本,然后选择view-> line endings-> unix。然后保存文档。
AGS 2013年

9

EditorConfig项目Github的链接)是另一种非常可行的解决方案。与sftp-config.json和.sublime-project / workspace之类的文件类似,一旦在项目文件夹或父文件夹中设置了.editorconfig文件,则每次在该目录结构中保存文件时,插件都会自动应用点文件中的设置,并为您自动执行一些其他操作。其中一些功能是保存Unix样式的行尾,添加文件末尾的换行符,删除空格以及调整缩进制表符/空格设置。


快速示例

使用Package Control在Sublime中安装EditorConfig插件;然后将一个名为.editorconfig以下内容的文件放置  在父目录(甚至您的主目录或根目录)中:

[*]
end_of_line = lf

而已。每当您在该目录结构中保存文件时,此设置都会自动应用Unix样式的行尾。您可以做更多更酷的事情,例如。修剪不需要的尾随空格或在每个文件的末尾添加尾随换行符。有关更多详细信息,请参见https://github.com/sindresorhus/editorconfig-sublime上的示例文件,即:

# editorconfig.org
root = true

[*]
indent_style = tab
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

root = true行表示EditorConfig将不在.editorconfig目录结构的上层查找其他文件。


攻击性不足。我需要该插件来识别导致文件出现crlf并将其打孔的人链。然后用lf保存。
ArtOfWarfare

谢谢,这是我的问题,我已经安装了此插件,并且它从.config文件中获取了错误的配置
Luke Robertson,

1

更改从LF到CRLF的行尾:

打开Sublime并遵循以下步骤:

1按Ctrl + Shift + P,然后安装软件包名称行统一结尾

然后再次按Ctrl + Shift + P

2在空白的输入框中键入“行统一结尾”

3按两次Enter

崇高有时可能会冻结,结果会将行尾从LF更改为CRLF


1

一次(批量)修改项目所有文件的最简单方法是通过Line Endings Unify包:

  1. Ctrl+ Shift+ P输入inst +选择“ 安装软件包”
  2. 输入line end +选择Line Endings Unify
  3. 安装后,Ctrl+ Shift+ P+输入end +选择Line Endings Unify
  4. (而不是3)副本:

    {
     "keys": ["ctrl+alt+l"],
     "command": "line_endings_unify"
    },
    

    Preferences-> KeyBindings中User数组(右窗格,在打开后[),然后按+ + 。CtrlAltL

另一个答案中所述

  • 早期的Macintosh操作系统(OS-9和更低版本)的回车符(CR)字符(0x0D\r)。

  • 行(LF)字符(0x0A\n)基于UNIX的系统(Linux,Mac OSX)

  • 行尾(EOL)序列(0x0D 0x0A\r\n)(非Unix:Windows,Symbian OS)。

如果您具有node_modulesbuild或其他自动生成的文件夹,请在运行软件包之前将其删除

运行程序包时:

  1. 在底部,系统会要求您选择要搜索的文件扩展名(以逗号分隔的列表)(例如,键入您唯一需要加快替换速度的文件扩展名js,jsx)。
  2. 然后询问您使用哪个输入行结尾,例如,是否需要LF 类型\n
  3. 按下ENTER并等待,直到看到带有LineEndingsUnify Complete的警报窗口。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.