W pliku mam tekst podobny do następującego:
sample text
some random text
even more random text
text with no indent
worst indention
Muszę usunąć puste miejsce przed każdą linią. Dla jednej linii to, co robię
0dw
Mogę powtórzyć to samo polecenie za pomocą. ale ręcznie nawigując do następnych linii.
Ale czy istnieje sposób na zastosowanie „0dw” do tego bloku linii?
Przypuszczam, że istnieje sposób na użycie makr, ale nie korzystałem z nich wcześniej. Ale chętnie się ich nauczę, jeśli nie ma innego wyboru.
text-processing
vim
saiy2k
źródło
źródło
Odpowiedzi:
Dowiedz się więcej tutaj na http://vim.wikia.com/wiki/Remove_unwanted_spaces
Jeśli chcesz to zrobić dla określonego zakresu linii:
BTW, najlepszym sposobem na rozpoczęcie nauki vima jest wykonanie
vimtutor
polecenia, nauczy Cię, jak używać Vima w edytorze Vima.źródło
V
i przesuwając kursor, aby rozszerzyć wybór linii. Następnie naciśnij,:
aby automatycznie wejść'<,'>
, a następnie możesz użyć wyrażenia regularnego Nikhila.:'a,'bs/^\s\+//
.Alternatywnym sposobem na to jest użycie narzędzi wcięcia VIM (zwykle powiązanych z </ >). Najpierw potrzebujesz sposobu, aby wskazać, które linie zostaną zmienione. Możesz użyć trybu selekcji wizualnej lub dowolnego innego sposobu określania zakresu linii, których dotyczy zmiana, a następnie użyj arbitralnie wysokiej liczby lub poziomów wcięcia, aby je usunąć.
9<
zwykle robi to całkiem nieźle, usuwając co najmniej 9 poziomów możliwych wcięć (tabulatorów / spacji) z bieżących linii.źródło
Mam podejście, aby to zrobić, wykonując proste czynności:
Objaśnienie trzeciego kroku:
0
nawiguje do początku linii.dw
usuwa słowo (puste spacje).normal
stosuje polecenie0dw
.'<,'>
powtarza normalną dla wszystkich wybranych linii w trybie wizualnym.źródło
ctrl+v
pozwala zrobić coś podobnego do tego, czego chcesz, ale nie do końca. Możesz wybrać blok wizualny i zastosować jedno polecenie do partii.źródło
:normal
jest tutaj ważną rzeczą i myślę, że jest to najlepsza odpowiedź tutaj. Czy możesz to opublikować jako odpowiedź?