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.