Виправлення закінчень рядка 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", закрити та повторно відкрити?
Преет Кукреті

@PreetKukreti Так. Після відкриття знову "Windows". Він працює лише для поточного файлу, а не для нового файлу.
Мінтобіт

1
@ an1zhegorodov ви зберегли файл раніше? що працювало на мене ...
charlysisto

1
Так. після збереження файлу він працював і для мене.
П'єр Гільберт

Відповіді:


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 їх багато :) - Якщо ви вказали один вид рядка, що закінчується у вашому синтаксисі певними префіксами, він замінить налаштування користувачів, які, в свою чергу, заміняють глобальні префікси
Лі

10
налаштування "default_line_ending": "unix", добре працює на нових файлах .., але не на існуючих (старих) файлах. Хтось знає, як змінити таку поведінку?
віщун

11
Це можна зробити лише вручну, було б дуже корисно, якби це було автоматизовано. Ви можете змінити це, як показано на зображенні вище View-> Endings-> Unix @soothsayer
Зірка

5
@soothsayer для існуючих файлів виберіть весь текст, а потім view-> line endings-> unix. Потім збережіть документ.
AGS

9

Проект EditorConfig ( посилання Github ) - ще одне дуже життєздатне рішення. Подібно до сортування файлів sftp-config.json та .sublime-project / робочої області, коли ви встановлюєте файл .editorconfig, або в папку проекту, або в батьківську папку, кожного разу, коли ви зберігаєте файл у цій структурі каталогу, плагін буде автоматично застосуйте налаштування у крапковому файлі та автоматизуйте кілька різних речей для вас. Деякі з них зберігають закінчення рядків у стилі Unix, додаючи нову рядок кінця файлу, видаляючи пробіли та налаштовуючи параметри вкладки / пробілу.


Швидкий приклад

Встановіть плагін EditorConfig в Sublime за допомогою управління пакетом; потім розмістіть файл, названий .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
Люк Робертсон,

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. Введіть кінець рядка + виберіть Закінчення рядка Уніфікувати .
  3. Після встановлення Ctrl+ Shift+ P+ тип кінця + оберіть Кінцеві закінчення рядків .
  4. АБО (замість 3.) копіюйте:

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

    до масиву користувача (права панель, після відкриття [) у розділі Налаштування -> Клавіатурні вкладки + натисніть Ctrl+ Alt+ L.

Як згадується в іншій відповіді :

  • Символ повернення каретки ( CR ) ( 0x0D, \r) [...] Ранні операційні системи Macintosh (OS-9 та новіші версії).

  • Символ лінійного каналу ( LF ) ( 0x0A, \n) [...] UNIX-системи (Linux, Mac OSX)

  • Послідовність кінця рядка ( EOL ) ( 0x0D 0x0A, \r\n) [...] (не-Unix: Windows, Symbian OS).

Якщо у вас є node_modules , складіть або інші автоматично створені папки, видаліть їх перед запуском пакета.

Під час запуску пакета:

  1. внизу вам пропонується вибрати розширення файлів для пошуку через список, розділених комами (введіть єдині, які вам потрібні, щоб прискорити заміну, наприклад js,jsx).
  2. то вам запитають, який рядок вводу закінчується використовувати , наприклад, якщо вам потрібен тип НЧ\n .
  3. натисніть ENTERі почекайте, поки не з’явиться вікно попередження з LineEndingsUnify Complete .
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.