Konwersja EOL w Notatniku ++

113

Z jakiegoś powodu, kiedy otwieram pliki z serwera uniksowego na moim komputerze z systemem Windows, czasami mają one konwersję Macintosh EOL, a kiedy je ponownie edytuję / zapisuję, nie działają poprawnie na serwerze unix. Używam tylko Notatnika ++ do edycji plików z tego serwera uniksowego, więc czy istnieje sposób na utworzenie makra, które automatycznie konwertuje EOL do formatu Unix za każdym razem, gdy otwieram plik?

Jeff
źródło
możliwy duplikat zmiany EOL na wielu plikach za jednym razem
Navid EMAD
1
Twój problem może dotyczyć dowolnego używanego programu FTP. Na przykład, używam WinSCP do zdalnego dostępu do serwera Unix, Notepad ++ jest ustawiony jako mój domyślny edytor, ale musiałem przejść do ustawień WinSCP i ustawić tryb transferu na Binary, aby zachować zakończenia linii. Możesz więc zmienić konfigurację programu FTP / SCP / etc, aby przesyłać pliki w inny sposób.
Slicktrick

Odpowiedzi:

200

Ta funkcja jest już wbudowana w Notepad ++. Z menu „Edycja” wybierz „Konwersja EOL” -> „Format UNIX / OSX”.

zrzut ekranu z możliwością jeszcze szybszego wyszukiwania (lub różnych wersji językowych)

Możesz także ustawić domyślny EOL w notatniku ++ poprzez "Ustawienia" -> "Preferencje" -> "Nowy dokument / Katalog domyślny", a następnie wybierz "Unix / OSX" w polu Format.

Nate Allen
źródło
7
Wiem o konwersji w menu edycji, a wspomniane ustawienia dotyczą tylko nowych dokumentów. Chcę automatycznie wykonać konwersję dla każdego otwieranego pliku (lub każdego pliku, który zapisuję)
Jeff
Problem polega na tym, że kiedy otwieram istniejący plik Unix, „Konwersja EOL” -> Format UNIX / OSX jest wyszarzony. Notepad ++ jest frustrujący w użyciu z plikami UNIX, więc używam Notetab Lite, który pozwala mi zapisywać wszystkie pliki jako UNIX, a nie tylko nowe.
Off The Gold
3
@OffTheGold Opcja UNIX EOL jest wyszarzona, ponieważ jest to bieżący wybór.
blakeoft
Tak jest. Dziękujemy od listopada 2017 za pośrednictwem Google.
SDsolar
To nie działa dla mnie. Ciągle wybieram „Konwersja EOL -> Unix”, ale to nic nie robi. Wracam do menu i widzę, że Windows jest wyszarzoną (a więc wybraną?) Opcją, więc ponownie klikam Unix. Próbowałem nawet zaznaczyć - najpierw cały mój tekst, na wypadek gdyby działał tylko przy zaznaczaniu, a następnie ponownie wybrałem Uniksa. Wciąż nic nie robi.
Loduwijk
16

W Notepad ++ użyj zamień wszystko na wyrażenie regularne. Ma to przewagę nad poleceniem konwersji w menu, że możesz operować na całym folderze bez konieczności otwierania każdego pliku lub przeciągania i upuszczania (na kilkuset plikach będzie to zauważalnie wolniejsze), a ponadto możesz ustawić filtr wieloznaczny.

(\r?\n)|(\r\n?)

do

\n

To dopasuje każdy możliwy wzorzec końca linii (pojedynczy \ r, \ n lub \ r \ n) z powrotem do \ n. (Lub \ r \ n, jeśli konwertujesz na styl Windows)

Aby operować na wielu plikach:

  • Użyj opcji „Zamień wszystko we wszystkich otwartych dokumentach” w zakładce „Zamień”. Najpierw musisz przeciągnąć i upuścić wszystkie pliki do Notepad ++. Dobrze, że będziesz mieć kontrolę nad tym, na którym pliku będziesz operować, ale może być powolny, jeśli istnieje kilkaset lub tysiące plików.
  • „Zastąp w plikach” w zakładce „Znajdź w plikach” według wybranego filtru plików, np. * .Cpp * .cs w jednym określonym katalogu.
Wappenull
źródło
Może to spowodować utratę wartości EOL z powodu zastąpienia a \ r \ n \ r \ n pojedynczym \ n. Myślę.
Sunspawn
Potwierdź, że działał w Notepad ++ 6.9.1. Będzie szukać do przodu, dlatego nie będzie rekursywnie zastępować tych, które są opóźnione.
Wappenull,
W odpowiedzi na: "Może to spowodować utratę EOL z powodu zastąpienia \ r \ n \ r \ n pojedynczym \ n" >> Nie będzie, ponieważ używa | (lub) operator między 2 możliwymi grupami.
Wappenull
3

Otwieram pliki „bezpośrednio” z WinSCP, który otwiera pliki w Notepad ++ Miałem pliki php na moim serwerze linux, które zawsze otwierały się w formacie Mac, bez względu na to, co zrobiłem :-(

Jeśli pobrałem plik, a następnie otworzyłem go z lokalnego (Windows), był on otwarty jako Dos / Windows .... hmmm

Rozwiązaniem było przekonwertowanie EOL pliku lokalnego do „formatu UNIX / OSX”, zapisanie go, a następnie załadowanie.

Teraz, kiedy otwieram plik bezpośrednio z serwera, jest on otwarty jako „Dos / Windows” :-)

MrCalvin
źródło
1

W zależności od projektu możesz rozważyć użycie EditorConfig ( https://editorconfig.org/ ). Istnieje wtyczka Notepad ++, która załaduje plik .editorconfig, w którym możesz określić „lf” jako obowiązkowe zakończenie linii.

Dopiero zacząłem go używać, ale do tej pory jest fajny, a projekty open source, nad którymi pracowałem, zawierały pliki .editorconfig od lat. Ustawienie „Konwersja EOL” nie jest zmieniane, więc może być nieco mylące, ale jeśli wybierzesz „Widok> Pokaż symbol> Pokaż koniec wiersza”, zobaczysz, że dodaje LF zamiast CRLF, nawet jeśli „Konwersja EOL ”, a dolny dolny róg pokazuje coś innego (np. Windows (CR LF)).

D. Cook
źródło