Usuwanie pustych linii w Notepad ++


384

Jak mogę zamienić puste linie w Notepad ++? Próbowałem znaleźć i zastąpić pustymi liniami w znalezieniu i nic w zamianie, ale to nie zadziałało; prawdopodobnie potrzebuje wyrażenia regularnego.

Odpowiedzi:


395

Potrzebujesz czegoś w rodzaju wyrażenia regularnego.

Musisz być w Extendedtrybie

Jeśli chcesz, aby wszystkie linie kończyły się na jednej linii, użyj \r\n. Jeśli chcesz po prostu usunąć puste linie, użyj \n\rjak pierwotnie sugerowano @Link.

Zastąp oba wyrażenia niczym.


21
Należy najpierw wybrać „rozszerzony” w trybie wyszukiwania.
q0987

14
Aby linie się nie łączyły, musisz wyszukać \r\n\r\ni zastąpić je \r\n.
Robert Kaucher

1
Zobacz komentarz @ BoltClock poniżej. Ponadto, jeśli plik jest zapisany z zakończeniami linii uniksowej, możesz przekonwertować go na zakończenia linii Windows w menu Edycja> Konwersja EOL> Format systemu Windows przed wykonaniem wyszukiwania i zamiany.
Big McLargeHuge

9
Jeśli chcesz usunąć linie zawierające tylko spacje i tabulatory lub nic, spróbuj użyć wyrażenia regularnego zamień, aby dopasować \r\n\W*\r\ni zamień na\r\n
Myster

2
@ ST3 hmm co myślałem, ten jest znacznie lepiej: (\r\n|\r|\n)(\s*(\r\n|\r|\n))+i zastąpić \r\ngo zobaczyć w akcji tutaj: regex101.com/r/qD9dB1/1
Myster

567

Istnieje teraz wbudowany sposób, aby to zrobić od wersji 6.5.2

Edit -> Line Operations -> Remove Empty Lines lub Remove Empty Lines (Containing Blank characters)

Zrzut ekranu usuwania pustych linii


Niestety nie uwzględnia to twojego wyboru, spowoduje usunięcie wszystkich pustych linii w pliku, nawet jeśli wybrałeś tylko niektóre z nich.
Fabio mówi Przywróć Monikę

Jeśli jest to operacja jednorazowa, możesz wyodrębnić wybrane linie do nowej karty notatnika ++ i tam wykonać tę operację. Procedura kopiuj-wklej przez 5 sekund. Wszelkie inne obejścia, które nie mogą zostać zrealizowane w tym czasie, są moim zdaniem marnotrawstwem. Ale jeśli robisz to codziennie 100 razy ...
Credo

Korzystałem z tego (nawet przypisałem mój skrót), ale jest o wiele wolniejszy niż powyższa opcja, więc używaj mądrze ...
Betlista

122

Istnieje wtyczka, która dodaje menu zatytułowane TextFX. To menu, w którym znajduje się oszałamiająca gama opcji szybkiej edycji tekstu, daje osobie możliwość szybkiego wprowadzania zmian w kodzie. W tym menu możesz znaleźć takie opcje, jak Usuń cytaty, Usuń puste linie, a także Rozpakuj i zawiń tekst

Wykonaj następujące czynności:

TextFX > TextFX Edit > Delete Blank Lines
TextFX > TextFX Edit > Delete Surplus Blank Lines

7
Nie jestem pewien, kiedy, ale wydaje się, że ta wtyczka jest teraz domyślnie instalowana. Nieco nie na temat, ale jedną z innych niezwykle przydatnych funkcji, poniżej TextFX > TextFX Tools, jest sortowanie linii, opcjonalnie usuwanie duplikatów. Bardzo przydatny sposób wykonywania Uniksa sort -una Windowsie bez cygwina, unxutils lub podobnego.
Cam Jackson

3
Oto link do wtyczki TextFx. Uważam to za bardzo przydatne. Użyj: Settings > Import > plugin...i znajdź plik dll, aby go zainstalować. Staje się pozycją menu przezPlugins
Nicholas Pickering

1
czy zadziała to na wszystkich otwartych dokumentach, czy na jednym dokumencie na raz?
Opuszczony

76
  1. notatnik ++
  2. Ctrl + H
  3. Wybierz Wyrażenie regularne
  4. Wejdź i ^[ \t]*$\r?\nznajdź co, pozostaw zamień puste. Spowoduje to dopasowanie wszystkich wierszy zaczynających się od białej spacji i kończących się znakiem powrotu karetki (w tym przypadku Windows CRLF)
  5. Kliknij przycisk Znajdź następny, aby zobaczyć, jak pasuje do pustych linii.

1
Musiałem użyć tej metody zamiast niektórych innych metod, aby łatwo działała w makrze. Dziękuję Ci.
Mafu Josh

5
potrzebne będą nawet krótsze i również mniejsze wymiany z powodu wielu pustych linii jednocześnie: ^ \ s * $ \ r? \ n
njank

30
  1. Naciśnij ctrl + h (skrót do zamiany).
  2. W polu Znajdź wpisz ^\R(dokładnie puste linie) lub ^\h*\R(tylko puste linie ze spacjami).
  3. Pozostaw opcję Zastąp strefą pustą .
  4. Zaznacz opcję Zawiń .
  5. Wybierz tryb wyszukiwania wyrażeń regularnych .
  6. Kliknij przycisk Zamień wszystko .

wprowadź opis zdjęcia tutaj


1
To działało dla mnie bez żadnych problemów lub dodatkowych ustawień do zmiany. Dzięki!
Bonez024

19

Możesz postępować zgodnie z tą techniką, jak pokazano na poniższym zrzucie ekranu:

  • Znajdź co: ^\r\n
  • Zamienić: keep this empty
  • Tryb szukania: Regular expression
  • Zawiń: zaznaczone

wprowadź opis zdjęcia tutaj

UWAGA: w przypadku plików * nix wystarczy znaleźć według\n


17

To działało dla mnie:

  1. Naciśnij ctrl + h(skrót do zamiany)
  2. Napisz jedno z poniższych wyrażeń regularnych w find whatpolu. [\n\r]+$lub^[\n\r]+
  3. Pozostaw Replace withpole puste
  4. W Search ModewybierzRegex
  5. Kliknij Replace All

    Gotowe!

To jedyne rozwiązanie, które nie spieprzyło moich ogromnych plików .csv. Dzięki!
veuncent

1
plus jeden, ponieważ w końcu znam skrót do zamiany :-D
Betlista

14

W notatniku ++ naciśnij CTRL + H, w trybie wyszukiwania kliknij przycisk opcji „Rozszerzony (\ n, \ r, \ t ...)”, a następnie wpisz pole „Znajdź co”: \ r \ n (skrót od CR LF ) i pozostaw pole „Zamień na” puste.

Na koniec naciśnij przycisk Zamień wszystko


faktycznie próbowałem, zobacz moje wyjaśnienie w mojej odpowiedzi. Byłeś na czymś!
Brad

3
Zakłada się jednak, że zakończeniami linii są Windows (CRLF), jeśli plik jest zapisany z uniksowymi zakończeniami linii, szukaj tylko \n.
BoltClock

@Brad: Napisałem pomiędzy () „skrót od CR LF”, nie chciałem, aby codetrek myślał, że \ n to CR, stąd edycja.
Bassem,

Zła odpowiedź, umieszcza wszystkie linie w jednym wierszu.
m0skit0

12

Nie jestem pewien co do regexu ani twojej sytuacji ...

Co powiesz na CTRL + A, wybierz menu TextFX -> Edycja TextFX -> Usuń puste linie i viola zniknęły wszystkie puste linie.

Uwaga dodatkowa - jeśli linia jest pusta, tzn. Nie zawiera spacji, zadziała


12

Możesz wyszukać następujące wyrażenie regularne: ^(?:[\t ]*(?:\r?\n|\r))+i zastąpić je pustym polem


11

Ctrl + H.

znajdź - \ r \ r zamień na - \ r.


Działa to dla mnie, usuwając dodatkową linię, w sensie znalezienia podwójnej zamiany na pojedynczą. Dzięki!!
genpet

Działa to dobrze, ale stwierdziłem, że muszę uruchomić go kilka razy w moim dokumencie, zanim znikną wszystkie wystąpienia \ r \ r. Nie jestem pewien dlaczego.
Hawkwing

7

To oczywiście nie działa, jeśli puste linie zawierają tabulatory lub spacje. Wiele stron internetowych (np. Http://www.guardian.co.uk/ ) zawiera te białe linie w wyniku wadliwego edytora HTML.

Usuń białe znaki, używając wyrażenia regularnego w następujący sposób:

zmień wzór: [\ t] + $ w nic.

gdzie [\ t] pasuje do tabulacji lub spacji. „+” odpowiada jednemu lub więcej wystąpieniom, a „$” oznacza koniec linii.

Następnie użyj notatnika ++ / textFX, aby usunąć pojedyncze lub dodatkowe puste linie. Upewnij się, że te puste linie nie są znaczące w danym kontekście.


5

wprowadź opis zdjęcia tutaj

Czasami \ n \ r etc nie działa, tutaj, aby dowiedzieć się, jakie powinno być Twoje wyrażenie regularne.

Zaleta tej sztuczki: jeśli chcesz zastąpić wiele plików jednocześnie, potrzebujesz tej metody. Powyżej nie będzie działać ...


5

1) Ctrl + H(Lub Search 🠆 Replace..), aby otworzyć okno Zamień.

2) Wybierz 'Search Mode' „Wyrażenie regularne”

3) W "Znajdź Co typ ^(\s*)(.*)(\s*)$& w „Zamień na” typ\2

  • ^ - Dopasowuje początek znaku linii
  • (\s*) - Dopasowuje puste znaki spacji
  • (.*) - Pasuje do dowolnych znaków
  • (\s*) - Dopasowuje puste znaki
  • $ - Dopasowuje znak końca linii
  • \2 - Oznacza pasującą pozycję drugiego nawiasu

wprowadź opis zdjęcia tutaj Więcej informacji na temat regex można znaleźć na stronie https://www.rexegg.com/regex-quickstart.html .


4
  1. Edycja >> Puste operacje >> Przytnij wiodące i końcowe spacje (aby usunąć czarne tabulacje i spacje w pustych liniach)
  2. Ctrl+, Haby uzyskać okno zamiany i zamień wzór: ^\r\nz niczym (wybierz wyrażenie regularne)

Uwaga: krok 1 usunie twoją intencję kodu wykonaną za pomocą tabulatorów i spacji


4

CTRL + A, wybierz menu TextFX -> Edycja TextFX -> Usuń puste linie, jak to sugeruje powyżej.

Ale jeśli linie zawierają trochę spacji, przesuń kursor do tej linii i wykonaj CTRL + H. Sek. „Znajdź co:” pokaże puste miejsce, aw sekcji „Zamień na” pozostaw puste. Teraz wszystkie spacje zostały usunięte i teraz spróbuj CTRL + A, wybierz menu TextFX -> Edycja TextFX -> Usuń puste linie


4

/n/rzakłada określony rodzaj podziału linii. Aby skierować dowolny pusty wiersz, możesz również użyć:

^$

To mówi - każda linia, która zaczyna się, a następnie kończy bez niczego pomiędzy. To wszystko jest najważniejsze. Zamień na ten sam pusty ciąg.


3

Nie widziałem połączonej jako odpowiedzi, więc wyszukaj ^ \ s + $ i zastąp {{}}

^\s+$ means
  ^ start of line
  \s+ Matches minimum one whitespace character (spaces, tabs, line breaks)
  $ until end of line

jeśli chcesz wielu linii, możesz spróbować: ^\s+^(\S)i zastąpić je \1.
jiggunjer


1

Łatwa alternatywa dla usuwania białych znaków z pustych linii:

  1. TextFX> Edycja TextFX> Przytnij końcowe spacje

Spowoduje to usunięcie wszystkich końcowych spacji, w tym końcowych spacji w pustych liniach. Upewnij się, że żadne spacje końcowe nie są znaczące.


0

Kilka powyższych wyrażeń i wyrażeń rozszerzonych nie działało dla mnie, ale zadziałało wyrażenie regularne „$ \ n $”.


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.