【问题标题】:Fixing Sublime Text 2 line endings?修复 Sublime Text 2 行尾?
【发布时间】:2012-08-07 15:33:27
【问题描述】:

这是我的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 选项说:

当我创建一个新文件时,我会检查以此处结尾的行:

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

【问题讨论】:

  • 你试过点击“Unix”,关闭然后重新打开吗?
  • @PreetKukreti 是的。重新打开后,它再次是“Windows”。它仅适用于当前文件,不适用于新文件。
  • @an1zhegorodov 你之前保存过文件吗?对我有用...
  • 是的。保存文件后它也对我有用。

标签: sublimetext2 line-endings


【解决方案1】:

评论说

// 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",

【讨论】:

  • 我有同样的问题,但我正确设置了"default_line_ending": "unix",我不知道为什么这不起作用!它快把我逼疯了!我进行了一些研究,显然它没有有用的解决方法。
  • @acrespo 你确定它没有被另一个首选项文件覆盖吗? Sublime 有很多:) - 如果您指定了一种以语法特定首选项结尾的行,它将覆盖用户首选项,进而覆盖全局首选项
  • 设置“default_line_ending”:“unix”,适用于新文件..但不适用于现有(旧)文件。有谁知道如何改变这种行为?
  • 这只能手动完成,如果这是自动化的,那将非常有帮助。您可以更改此设置,如上图 View->Line Endings->Unix @soothsayer
  • @soothsayer,对于现有文件,选择所有文本,然后选择 view -> line endings -> unix。然后保存文档。
【解决方案2】:

EditorConfig project (Github link) 是另一个非常可行的解决方案。类似于 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 保存。
  • 谢谢,这是我的问题,我安装了这个插件,但它从 .config 文件中获取了错误的配置
【解决方案3】:

将行尾从 LF 更改为 CRLF:

打开 Sublime 并按照以下步骤操作:-

1 按Ctrl+shift+p 然后安装包名行统一结尾

然后再按Ctrl+shift+p

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

3 按两次回车

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

【讨论】:

    【解决方案4】:

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

    1. Ctrl+Shift+P 输入inst + 选择Install Package
    2. 输入line end + 选择Line Endings Unify
    3. 安装后,Ctrl+Shift+P + 输入 end + 选择 行尾统一
    4. OR(而不是 3.)复制:

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

      Preferences -> KeyBindings 中的 User 数组(右窗格,在打开 [ 之后)+ 按 Ctrl+Alt+L.

    another answer中所述:

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

    • 换行 (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 的警报窗口。

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 2012-10-03
      • 2016-11-08
      • 2016-09-19
      • 2016-10-06
      • 1970-01-01
      相关资源
      最近更新 更多