Dzięki soulmerge. To moja ulubiona odpowiedź, ponieważ faktycznie wyjaśnia, co robi polecenie: g.
Tim Swast,
4
Spowoduje to usunięcie wszystkich pustych wierszy (nie zawierają żadnych białych znaków ..), ale może to nie być wyjątkowy wymóg. Ktoś może nadal zachować jedną z pustych linii. :%!cat -smoże być wyborem ..
coanor
2
: g / ^ \ s * $ / d z wyrażeniem regularnym „dowolne spacje char” w wierszu
Działa to na określony [zakres] (domyślnie cały plik), wykonując polecenie Ex cmd dla każdego wzorca pasującego do linii (polecenie Ex to jedno rozpoczynające się dwukropkiem, takie jak :dusuwanie). Przed uruchomieniem polecenia cmd „ .” jest ustawiany na bieżącą linię.
Świetna sztuczka z: v /./ d (łatwiejsze do wpisania), ale potem musisz zrobić: nohl później.
Claes Mogren
1
@ClaesMogren lub po prostu odbij się na control-l
jm3
6
@zladuric według vim.wikia.com/wiki/Power_of_g jest to globalna zmiana (więc wykonuje polecenie na wszystkim, co nie pasuje)
adam_0
44
Poniższych czynności można użyć do usunięcia tylko wielu pustych linii (zredukowania ich do pojedynczej pustej linii) i pozostawienia nienaruszonych pojedynczych pustych linii:
Czy ktoś mógłby wyjaśnić, co oznaczają tokeny? (Więc jak to działa?) Dzięki.
PAStheLoD
5
\_$oznacza end-of-line , które mogą być używane wewnątrz wzoru ( $może być używany tylko na końcu wzorca.) Tak samo jest z \_^tym, że środki początek linii i może być używany w dowolnym miejscu wewnątrz wzorca. Tak więc wzór pasuje do pustej linii, nowej linii i ponownie pustej linii. Zobacz stronę pomocy Vim regex .
Wiktor Stribiżew
1
Inny sposób na zrobienie tego samego::g/^$/,/./-j
SergioAraujo,
14
jak usunąć wszystkie puste pola
:%s,\n\n,^M,g
(zrób to wiele razy wykorzystując wszystkie puste linie zniknęły)
jak usunąć wszystkie puste pola pozostawiając POJEDYNCZĄ pustą linię
:%s,\n\n\n,^M^M,g
(zrób to wiele razy)
jak usunąć wszystkie puste pola pozostawiając DWIE puste linie NA MAKSYMALNIE,
:%s,\n\n\n\n,^M^M^M,g
(zrób to wiele razy)
aby wprowadzić ^ M, muszę kontrolować-Q i Control-M w systemie Windows
Ta funkcja usuwa tylko dwa lub więcej pustych wierszy, wstaw poniższe wiersze do vimrc, a następnie użyj \ d, aby wywołać funkcję
fun! DelBlank()
let _s=@/
let l = line(".")
let c = col(".")
:g/^\n\{2,}/d
let @/=_s
call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>
Próbowałem kilka odpowiedzi na tej stronie, ale wiele z nich nie działało dla mnie. Może dlatego, że używam Vima na Windowsie 7 (nie wyśmiewaj się, po prostu lituj się: p)?
Oto najłatwiejszy, jaki znalazłem, który działa na Vimie w systemie Windows 7:
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line
pasta
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
w .vimrc, a następnie uruchom ponownie vim. jeśli użyjesz polecenia: 5,12DBL, spowoduje to usunięcie wszystkich pustych linii między 5 a 12 rzędem. Myślę, że moja odpowiedź jest najlepszą odpowiedzią!
Publikując odpowiedzi, dodaj i wyjaśnij, co zmieniłeś lub dodałeś, jak to działa lub coś takiego. Chociaż twoja odpowiedź może być rozwiązaniem, prawdopodobnie niektórzy ludzie, którzy to czytają, nie rozumieją, co to znaczy ani jak działa. I proszę, zrób to po angielsku.
Tim
To tak naprawdę nie ma znaczenia. Na to pytanie przyjęto odpowiedź 5 lat temu
Tim
Myślę, że odpowiedź soulmerge: g / ^ $ / d nie jest najlepszą odpowiedzią. I edytuję, aby poprawić jego odpowiedź za pomocą: g / ^ \ s * $ / d. ale dlaczego nie mogę oglądać mojej edycji w „pokaż wszystkie zmiany w tej pozie”?
cn8341
Moja odpowiedź jest lepsza niż jego odpowiedź, a kto odrzucił moją odpowiedź i dlaczego moja odpowiedź została odrzucona?
cn8341
2
Jeśli coś ma podwójny odstęp między wierszami tekstu, to polecenie usunie podwójne odstępy i połączy istniejące wcześniej powtarzające się puste wiersze w jedną pustą linię. Używa tymczasowego separatora ^^^ na początku linii, więc jeśli koliduje to z twoją treścią, wybierz coś innego. Linie zawierające tylko białe znaki są traktowane jako puste.
Zasadniczo usuwa wszystkie wiersze, które nie mają cyfr ani liter. Ponieważ wszystkie elementy na mojej liście miały litery, usunięte zostały wszystkie puste wiersze.
:%!cat -s
może być wyborem ..Znaleziono to:
Źródło: Power of g at vim wikia
źródło
lub
lub
źródło
Poniższych czynności można użyć do usunięcia tylko wielu pustych linii (zredukowania ich do pojedynczej pustej linii) i pozostawienia nienaruszonych pojedynczych pustych linii:
źródło
\_$
oznacza end-of-line , które mogą być używane wewnątrz wzoru ($
może być używany tylko na końcu wzorca.) Tak samo jest z\_^
tym, że środki początek linii i może być używany w dowolnym miejscu wewnątrz wzorca. Tak więc wzór pasuje do pustej linii, nowej linii i ponownie pustej linii. Zobacz stronę pomocy Vim regex .:g/^$/,/./-j
jak usunąć wszystkie puste pola
(zrób to wiele razy wykorzystując wszystkie puste linie zniknęły)
jak usunąć wszystkie puste pola pozostawiając POJEDYNCZĄ pustą linię
(zrób to wiele razy)
jak usunąć wszystkie puste pola pozostawiając DWIE puste linie NA MAKSYMALNIE,
(zrób to wiele razy)
aby wprowadzić ^ M, muszę kontrolować-Q i Control-M w systemie Windows
źródło
\r
zamiastCtrl-M
.Co powiesz na:
źródło
praca z perlem w vimie:
:%!perl -pi -e s/^\s*$//g
źródło
chomp
wykonałby tej pracy?To działa dla mnie
:%s/^\s*$\n//gc
źródło
:%s/^\n//gc
Ta funkcja usuwa tylko dwa lub więcej pustych wierszy, wstaw poniższe wiersze do vimrc, a następnie użyj \ d, aby wywołać funkcję
źródło
Próbowałem kilka odpowiedzi na tej stronie, ale wiele z nich nie działało dla mnie. Może dlatego, że używam Vima na Windowsie 7 (nie wyśmiewaj się, po prostu lituj się: p)?
Oto najłatwiejszy, jaki znalazłem, który działa na Vimie w systemie Windows 7:
Oto dłuższa odpowiedź na Vim Wikia: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines
źródło
pasta
w .vimrc, a następnie uruchom ponownie vim. jeśli użyjesz polecenia: 5,12DBL, spowoduje to usunięcie wszystkich pustych linii między 5 a 12 rzędem. Myślę, że moja odpowiedź jest najlepszą odpowiedzią!
źródło
Jeśli coś ma podwójny odstęp między wierszami tekstu, to polecenie usunie podwójne odstępy i połączy istniejące wcześniej powtarzające się puste wiersze w jedną pustą linię. Używa tymczasowego separatora ^^^ na początku linii, więc jeśli koliduje to z twoją treścią, wybierz coś innego. Linie zawierające tylko białe znaki są traktowane jako puste.
źródło
Naciśnij deleteprzycisk w trybie wstawiania, aby usunąć puste linie.
źródło
To działało dla mnie:
Zasadniczo usuwa wszystkie wiersze, które nie mają cyfr ani liter. Ponieważ wszystkie elementy na mojej liście miały litery, usunięte zostały wszystkie puste wiersze.
źródło