Sửa lỗi kết thúc dòng văn bản 2 tuyệt vời?


177

Đây là Settings - Usercấu hình của tôi :

{
    "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
}

Nhận xét cho default_line_endingtùy chọn nói: Nhận xét về tùy chọn default_line_ending

Khi tôi tạo một tệp mới, tôi kiểm tra dòng kết thúc tại đây:

Kiểm tra kết thúc dòng

Như bạn có thể thấy nó vẫn là Windows ... Có ý tưởng nào không?


Bạn đã thử nhấp vào "Unix", đóng và sau đó mở lại chưa?
Preet Kukreti

@PreetKukreti Vâng. Sau khi mở lại, "Windows" lại. Nó chỉ hoạt động cho tập tin hiện tại, không phải tập tin mới.
mintobit

1
@ an1zhegorodov bạn đã lưu tập tin trước? điều đó làm việc cho tôi ...
charlysisto

1
Vâng. sau khi lưu tập tin nó cũng làm việc cho tôi
Pierre Guilbert

Câu trả lời:


199

Các bình luận nêu

// 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).

Bạn đang thiết lập

"default_line_ending": "LF",

Bạn nên đặt

"default_line_ending": "unix",


1
Tôi có cùng một vấn đề nhưng tôi đang thiết lập chính xác "default_line_ending": "unix", tôi không biết tại sao địa ngục không hoạt động! Nó làm tôi điên lên! Tôi đã nghiên cứu một chút và dường như nó không có sửa chữa hữu ích.
acrespo

@acrespo Bạn có chắc chắn rằng nó không bị ghi đè bởi tệp tùy chọn khác không? Sublime có rất nhiều trong số chúng :) - Nếu bạn đã chỉ định một loại dòng kết thúc bằng các prefs cụ thể theo cú pháp của mình, nó sẽ ghi đè lên các prefs của người dùng, từ đó ghi đè lên các prefs toàn cầu
Leigh

10
thiết lập "default_line_ending": "unix", hoạt động tốt trên các tệp mới .. nhưng không phải trên các tệp hiện có (cũ hơn). Có ai biết làm thế nào để thay đổi hành vi đó?
dịu

11
Điều này chỉ có thể được thực hiện bằng tay, sẽ thực sự hữu ích nếu điều này được tự động. Bạn có thể thay đổi điều này như đã thấy trong hình trên View-> Line Endings-> Unix @soothsayer
Một ngôi sao

5
@soothsayer, đối với các tệp hiện có, chọn tất cả văn bản, sau đó view-> line endings-> unix. Sau đó lưu tài liệu.
AGS

9

Các dự án EditorConfig ( Github liên kết ) là một giải pháp rất khả thi. Tương tự như loại tệp sftp-config.json và .sublime-project / workspace, một khi bạn thiết lập tệp .editorconfig, trong thư mục dự án hoặc trong thư mục mẹ, mỗi khi bạn lưu tệp trong cấu trúc thư mục đó, plugin sẽ tự động áp dụng các cài đặt trong tệp chấm và tự động hóa một vài thứ khác nhau cho bạn. Một số trong số đó đang lưu các kết thúc dòng kiểu Unix, thêm dòng mới vào cuối tệp, xóa khoảng trắng và điều chỉnh cài đặt tab / không gian thụt lề của bạn.


VÍ DỤ NHANH

Cài đặt plugin EditorConfig trong Sublime bằng Gói kiểm soát; sau đó đặt một tệp có tên  .editorconfigtrong thư mục mẹ (thậm chí là nhà của bạn hoặc root nếu bạn muốn), với nội dung sau:

[*]
end_of_line = lf

Đó là nó. Cài đặt này sẽ tự động áp dụng các kết thúc dòng kiểu Unix bất cứ khi nào bạn lưu tệp trong cấu trúc thư mục đó. Bạn có thể làm nhiều thứ hay ho hơn, ex. cắt các khoảng trắng ở đuôi không mong muốn hoặc thêm một dòng mới ở cuối mỗi tệp. Để biết thêm chi tiết, hãy tham khảo tệp ví dụ tại https://github.com/sindresorhus/editorconfig-sublime , đó là:

# 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

Các root = truephương tiện dòng EditorConfig sẽ không tìm kiếm khác .editorconfigcác file ở các cấp độ trên của cấu trúc thư mục.


Không đủ mạnh mẽ tích cực. Tôi cần plugin để xác định chuỗi những người dẫn đến tệp có crlf và đấm vào mặt họ. Và sau đó lưu nó với lf.
ArtOfWarfare

Cảm ơn, đây là vấn đề của tôi, tôi đã cài đặt plugin này và nó đã lấy cấu hình sai từ tệp .config
Luke Robertson

1

để kết thúc dòng kết thúc từ LF đến CRLF:

mở Sublime và làm theo các bước: -

1 nhấn Ctrl + shift + p sau đó cài đặt dòng tên gói thống nhất kết thúc

sau đó nhấn lại Ctrl + shift + p

2 trong hộp nhập trống loại "Dòng thống nhất kết thúc"

3 Lượt nhập hai lần

Sublime đôi khi có thể đóng băng và kết quả là sẽ thay đổi các kết thúc dòng từ LF sang CRLF


1

Cách đơn giản nhất để sửa đổi tất cả các tệp của một dự án cùng một lúc là thông qua gói Kết thúc dòng kết thúc :

  1. Ctrl+ Shift+ Pinst + chọn Cài đặt gói .
  2. Nhập dòng kết thúc + chọn Kết thúc dòng Thống nhất .
  3. Sau khi cài đặt, Ctrl+ Shift+ P+ loại kết thúc + chọn Kết thúc dòng thống nhất .
  4. HOẶC (thay vì 3.) sao chép:

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

    vào mảng Người dùng (khung bên phải, sau khi mở [) trong Tùy chọn -> KeyBindings + nhấn Ctrl+ Alt+ L.

Như đã đề cập trong một câu trả lời khác :

  • Ký tự Vận chuyển trở lại ( CR ) ( 0x0D, \r) [...] Các hệ điều hành Macintosh đời đầu (OS-9 trở về trước).

  • Ký tự Line Feed ( LF ) ( 0x0A, \n) [...] Các hệ thống dựa trên UNIX (Linux, Mac OSX)

  • Trình tự kết thúc dòng ( EOL ) ( 0x0D 0x0A, \r\n) [...] (không phải Unix: Windows, hệ điều hành Symbian).

Nếu bạn có node_modules , build hoặc các thư mục được tạo tự động khác, hãy xóa chúng trước khi chạy gói.

Khi bạn chạy gói:

  1. bạn được yêu cầu ở phía dưới để chọn phần mở rộng tệp nào cần tìm kiếm thông qua danh sách được phân tách bằng dấu phẩy (nhập những phần duy nhất bạn cần để tăng tốc độ thay thế, ví dụ js,jsx).
  2. sau đó bạn được hỏi dòng đầu vào nào sẽ sử dụng , ví dụ nếu bạn cần loại LF\n .
  3. nhấn ENTERvà đợi cho đến khi bạn thấy một cửa sổ cảnh báo với LineEndingsUnify Complete .
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.