Podniosły tekst 2: Jak usunąć puste / puste linie


271

Załóżmy, że miałem plik tekstowy z następującymi dziewięcioma liniami:

foo

bar

baz

qux

quux

Jak mogę użyć Sublime Text 2, aby usunąć wszystkie cztery puste / puste linie, pozostawiając tylko pięć wierszy?

Odpowiedzi:


658

Wybierz tekst

Naciśnij:

  • Ctrl+ Hna PC lub
  • Command+ Alt+ Fna Macu lub
  • Kliknij Znajdź-> Zamień.

Upewnij się, że wybrałeś „wyrażenie regularne”, naciskając:

  • Alt+ Rna PC lub
  • Command+ Alt+ Rna Macu lub
  • Kliknij .*w polu Znajdź.

Znajdź co: ^\n

Zamień na: (nic, pozostaw puste).


3
To działa, dziękuję! Czy istnieje sposób powiązania znalezionego / zamienionego skrótu klawiaturowego lub zapisania go w celu szybkiego dostępu? Poszukałem go i nic nie znalazłem
Nick

46
Małe zastosowanie sugestii, ^(\r|\n\r?)aby pokryć wszystkie możliwe przerwy linii.
Haris Krajina,

5
Dla mnie (Sublime Text 2) skrót to (Alt + Cmd + F), a następnie jak opisał Hugp Corra
Maxence

24
Lepszym sposobem na znalezienie wszystkich pustych linii (w tym z białymi odstępami) byłoby: ^[\s]*?[\n\r]+
Crates

5
@Crates, którego nie potrzebujesz ?, ponieważ *również pasuje do zerowych wystąpień i \s*będzie pasować do dodatkowego „\ r”, na przykład podczas edycji tekstu systemu Windows w środowisku linux, podobnie ^\s*$jak i sztuczka.
drevicko

67

Wyrażenie regularne w odpowiedzi Hugo jest poprawne, gdy w wierszu nie ma spacji. W przypadku, gdy istnieją spacje regularne, może być^\s+$


32
Zakłada się, że jest to biały znak. Ponadto nie będzie działać na faktyczne zastąpienie linii niczym. Spróbuj ^[\s]*?[\n\r]+zamiast tego. Przetestowałem to i działa.
Crates

24

Istnieją również niektóre wtyczki ST2 / ST3 do takich zadań. Lubię te dwa:

Pierwszy ma dwie metody usuwania pustych / niepotrzebnych wierszy. Jedna z nich nazywa Delete Surplus Blank Linessię fajna. Usuwa tylko te wiersze, po których następuje kolejna pusta linia


10

Znajdź / zamień rozwiązanie:

Regex Find:\s+

Zamień na: // pojedyncza spacja


3
Właściwie to: $ \ s +
kris,

8

Nawet nie wiem, jak to wszystko działa, ale próbowałem ^\s*$i nie działałem (pozostawiając kilka pustych linii).

To zamiast tego ^\s*działa dla mnie

{sublime text 3}


7

Musiałem użyć:

zamień \ n ^ \ s * \ n na \ n

Https://github.com/NicholasBuse/sublime_DeleteBlankLines plugin nie zrobił nic w ogóle.


2
Upewnij się, że wybierasz obszar, który chcesz zastosować, a następnie użyj odpowiednich klawiszy skrótu Windows : Ctrl + Alt + Backspace (Usuń puste linie) Ctrl + Alt + Shift + Backspace (Usuń nadmiar pustych linii) OSX : Ctrl + Alt + Delete (Usuń puste linie) Ctrl + Alt + Shift + Usuń (Usuń puste linie) Linux : Ctrl + Alt + Backspace (Usuń puste linie) Ctrl + Alt + Shift + Backspace (Usuń nadmiar pustych linii)
Xtremefaith

5

Wzniosły tekst 2 i 3

Komentarze @crates działają dla mnie,

Krok 1: Po prostu naciśnij ctrl+H

Krok 2: naciśnij klawisz RegEX

Krok 3: napisz to w Find: ^[\s]*?[\n\r]+

Krok 4: zamień wszystko


5

Prostsze niż myślałem. Ctrl+ ANastępnie Ctrl+ HWybierz opcję Wyrażenie regularne .*. Wymień \n\nsię \n. Voila!


3

Szukasz tego:

^\n|^\s+$

nie usunie wiersza, jeśli z przodu znajduje się biała spacja lub tabulatory>

na przykład:

nie zostaną one usunięte: ... spacja ... abc

... zakładka ... abc

to:

... przestrzeń ... ... nic więcej ...

... zakładka ... ... nic więcej ...


3

Korzystanie z wielu wyborów: wybierz jedną parę podziałów linii, a następnie kilkakrotnie użyj szybkiego wyszukiwania wszystkich ( Alt+ F3) lub szybkiego dodawania następnego ( Ctrl+ D), aby zaznaczyć je wszystkie; następnie naciśnij, Enteraby zastąpić je pojedynczymi podziałami linii.


1
W dużych dokumentach uważam, że ta awaria jest wysublimowana.
Thalecress

3

Jest to łatwiejszy sposób na zrobienie tego bez wyrażenia regularnego. musisz tylko zaznaczyć cały tekst. następnie przejdź do: Edytuj -> Permute Lines -> Unique.

To wszystko. i wszystkie puste linie zostaną usunięte.


Spowoduje to usunięcie WSZYSTKICH nieunikalnych linii. Nie tylko puste. Powiedzmy, że masz HTML z wieloma wierszami będącymi pojedynczym zamykaniem </div>, spowoduje to usunięcie wszystkich oprócz pierwszego. Lub w kodzie usunie wszystkie twoje zamknięcia}. To nie jest niezawodne, aby usunąć tylko puste wiersze, zrozumieć, co robi.
Ivan McA

2

Innym sposobem jest użycie wiersza polecenia cc.dblConyEdit (wtyczki) do usunięcia pustych linii lub pustych linii.


1

Istnieje również „Połącz linie”. W systemie OSX zaznacz cały tekst i naciśnij kilka razy CMD-J, a zwinie on zaznaczenie według linii, usuwając podziały linii.

Edycja: dzięki temu podejściu będziesz mieć wszystko w jednym wierszu, a nie o to prosiłeś.


2
Widzę jednak, dokąd zmierzasz .. ta sugestia powoduje przeciągnięcie całej zawartości do jednej linii, ale makro sprawiłoby, że to działałoby: (klawisze OSX) ctrl-q(makro nagrywania), cmd-j(łączenie linii) down arrow, ctrl-q(makro zakończenia) . Następnie shift-ctrl-qpowtarzaj tak często, jak to konieczne ...
ptim



0

W moim przypadku niektóre puste wiersze zawierały przestrzeń o szerokości zerowej znaku Unicode (U + 200b). Aby pozbyć się pustych linii, w tym tych z tym znakiem Unicode:

\s\x{200b}|^\s

0

Korzystając z funkcji znajdź / zamień, spróbuj wkleić zaznaczenie zaczynające się na końcu linii powyżej pustej linii i kończy się na początku linii po pustej linii. Działa to dla pojedynczej pustej linii. Możesz powtórzyć proces dla wielu pustych linii. CTRL- H, umieść swój wybór w polu wyszukiwania i umieść pojedynczy nowy wiersz w polu zastąpienia za pomocą kopiuj / wklej lub inną metodą.


0

Aby znaleźć dodatkowe spacje i puste linie, naciśnij Ctrl+ Shift+ F Wybierz Wyszukaj wyrażenia regularne

[\n\r]{2,}

a następnie zamień na

\n

aby usunąć wszelkiego rodzaju spacje w wzniosły i Dreamviewr


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.