Naprawianie końcówek linii Sublime Text 2?


177

Oto moja Settings - Userkonfiguracja:

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

Komentarz do default_line_endingopcji mówi: Komentarz do opcji default_line_ending

Kiedy tworzę nowy plik, sprawdzam linię kończącą się tutaj:

Sprawdź zakończenie linii

Jak widać, to wciąż Windows ... Jakieś pomysły?


czy próbowałeś kliknąć „Unix”, zamknąć i ponownie otworzyć?
— Preet Kukreti 10-12

@PreetKukreti Yes. Po ponownym otwarciu jest to ponownie „Windows”. Działa tylko dla bieżącego pliku, a nie nowego pliku.
— mintobit

1
@ an1zhegorodov czy zapisałeś plik wcześniej? to zadziałało dla mnie ...
— charlysisto

1
Tak. po zapisaniu pliku u mnie też zadziałało.
— Pierre Guilbert

Odpowiedzi:


199

Komentarz stwierdza

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

Ustawiasz

"default_line_ending": "LF",

Powinieneś ustawić

"default_line_ending": "unix",


1
Mam ten sam problem, ale prawidłowo ustawiam "default_line_ending": "unix", nie wiem, do diabła, dlaczego to nie działa! Doprowadza mnie to do szału! Trochę poszperałem i najwyraźniej nie ma użytecznej poprawki.
— acrespo

@acrespo Czy na pewno nie jest zastępowany przez inny plik preferencji? Sublime ma ich wiele :) - Jeśli podałeś jeden rodzaj linii kończącej się w ustawieniach specyficznych dla składni, nadpisuje on ustawienia użytkownika, które z kolei zastępują ustawienia globalne
— Leigh

10
ustawienie "default_line_ending": "unix", działa dobrze na nowych plikach .. ale nie na istniejących (starszych) plikach. Czy ktoś wie, jak zmienić to zachowanie?
— wróżbita

11
Można to zrobić tylko ręcznie, byłoby naprawdę pomocne, gdyby było to zautomatyzowane. Możesz to zmienić, jak widać na powyższym obrazku Widok-> Zakończenia linii-> Unix @soothsayer
— A Star

5
@soothsayer, dla istniejących plików, zaznacz cały tekst, a następnie view-> line endings-> unix. Następnie zapisz dokument.
— AGS,

9

Projekt EditorConfig ( link do Github ) to kolejne bardzo opłacalne rozwiązanie. Podobnie jak sftp-config.json i .sublime-project / workspace sort plików, po skonfigurowaniu pliku .editorconfig, w folderze projektu lub w folderze nadrzędnym, za każdym razem, gdy zapiszesz plik w tej strukturze katalogów, wtyczka będzie automatycznie zastosuj ustawienia w pliku kropki i zautomatyzuj kilka różnych rzeczy. Niektóre z nich zapisują zakończenia linii w stylu uniksowym, dodają znak nowej linii na końcu pliku, usuwają spacje i dostosowują ustawienia tabulacji / spacji wcięć.


SZYBKI PRZYKŁAD

Zainstaluj wtyczkę EditorConfig w Sublime za pomocą kontroli pakietów; następnie umieść plik o nazwie  .editorconfigw katalogu nadrzędnym (nawet w katalogu domowym lub głównym, jeśli chcesz), z następującą zawartością:

[*]
end_of_line = lf

Otóż ​​to. To ustawienie automatycznie zastosuje zakończenia linii w stylu uniksowym za każdym razem, gdy zapiszesz plik w tej strukturze katalogów. Możesz robić więcej fajnych rzeczy, np. przyciąć niechciane końcowe spacje lub dodać końcowy znak nowej linii na końcu każdego pliku. Aby uzyskać więcej informacji, zapoznaj się z przykładowym plikiem pod adresem https://github.com/sindresorhus/editorconfig-sublime , czyli:

# 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

Te root = trueśrodki, które EditorConfig linia nie będzie szukać innych .editorconfigplików w górnych poziomach struktury katalogów.


Niewystarczająco agresywny. Potrzebuję wtyczki, aby zidentyfikować łańcuch ludzi prowadzących do pliku mającego crlf i uderzyć każdego z nich w twarz. A następnie zapisz go za pomocą lf.
— ArtOfWarfare

Dzięki, to był mój problem, zainstalowałem tę wtyczkę i pobierała niewłaściwą konfigurację z pliku .config
— Luke Robertson

1

aby zmienić zakończenia linii od LF do CRLF:

otwórz Sublime i postępuj zgodnie z instrukcjami: -

1 naciśnij Ctrl + shift + p, a następnie zainstaluj ujednolicone zakończenia linii nazwy pakietu

następnie ponownie naciśnij Ctrl + Shift + P

2 w pustym polu wprowadzania wpisz „Zakończenie linii ujednoliconej”

3 Naciśnij dwukrotnie enter

Sublime może czasami zamarzać, w wyniku czego zmienia się zakończenia linii z LF na CRLF


1

Najprostszym sposobem na jednoczesną modyfikację wszystkich plików projektu (wsad) jest użycie pakietu Line Endings Unify :

  1. Ctrl+ Shift+ Pwpisz inst + wybierz opcję Zainstaluj pakiet .
  2. Wpisz line end + wybierz Line Endings Unify .
  3. Po zainstalowaniu Ctrl+ Shift+ P+ wpisz end + wybierz Line Endings Unify .
  4. LUB (zamiast 3.) kopiuj:

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

    do tablicy User (prawy panel, po otwarciu [) w Preferences -> KeyBindings + naciśnij Ctrl+ Alt+ L.

Jak wspomniano w innej odpowiedzi :

  • Znak powrotu karetki ( CR ) ( 0x0D, \r) [...] Wczesne systemy operacyjne Macintosh (OS-9 i wcześniejsze).

  • Znak nowego wiersza ( LF ) ( 0x0A, \n) [...] Systemy oparte na UNIX (Linux, Mac OSX)

  • Sekwencja końca wiersza ( EOL ) ( 0x0D 0x0A, \r\n) [...] (inne niż Unix: Windows, Symbian OS).

Jeśli masz node_modules , build lub inne automatycznie generowane foldery, usuń je przed uruchomieniem pakietu.

Po uruchomieniu pakietu:

  1. na dole zostaniesz poproszony o wybranie rozszerzeń plików do przeszukania na liście oddzielonej przecinkami (wpisz tylko te, których potrzebujesz, aby przyspieszyć zamiany, np js,jsx.).
  2. wtedy zostaniesz zapytany, którego zakończenia linii wejściowej użyć , np. czy potrzebujesz typu LF\n .
  3. naciśnij ENTERi poczekaj, aż zobaczysz okno alertu z LineEndingsUnify Complete .
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.