Jak mogę wstawić tekst na końcu grupy wierszy?

18

Powiedzmy, że miałem blok tekstu ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... i chciałem wstawić .na końcu każdej linii. Jakie byłoby najlepsze podejście do tego?

vim.ryan
źródło

Odpowiedzi:

14

Wykonuję następujące czynności, aby dołączyć tekst do wielu wierszy:

  • <c-V> - Wejdź w tryb Visual Block.
  • Użyj j/, kaby wybrać linie.
  • $ - Przesuń kursor do ostatniego znaku.
  • A - Wejdź w tryb wstawiania po ostatnim znaku.
  • Wstaw żądany tekst.
  • <Esc> - Wyjdź z trybu wstawiania i dołącz blok kończący.

W porównaniu do pisania :normpo selekcji jest jeszcze mniej naciśnięć klawiszy, ale prawdziwym powodem, dla którego go używam, jest to, że bardziej instynktownie pracuję w trybie Visual Block dla tego typu zmian.

Vitor
źródło
Bardzo przydatne w połączeniu z wklejeniem kolumny tekstu .
Paul Rougieux
8

W pierwszym wierszu po prostu wpisz: 4:norm A.

4i :utwórz zakres dla siebie, a następnie norm A.dodaje kropkę do każdej linii

Innym rozwiązaniem dla dłuższych akapitów może być: Vip<C-v>$A.<Esc>

Pierwszym krokiem jest wybranie akapitu, a Vipnastępnie przejście do trybu bloku wizualnego i przesunięcie kursora na koniec każdej linii, $następnie dodanie .do każdej linii za pomocą A.i przejście do trybu normalnego z, <Esc>aby zobaczyć zmianę zastosowaną do każdej linii .

rbernabe
źródło
Co to za :Apolecenie? Nie znalazłem tego za pośrednictwem:h :A
Peter Rincker
mój błąd. W rzeczywistości nie przetestowałem odpowiedzi. Aktualizuję to. Powinien używać normalnego polecenia, podobnie jak odpowiedź @Kritixi Lhitos
rbernabe
Dwie postacie mniej niż 4:norm A.byłoby4:s/$/.
Philippos
3

Najpierw możesz je wizualnie zaznaczyć za pomocą, Va następnie użyć klawiszy ruchu, aby zaznaczyć cały tekst (lub jeśli tekst był ściśle akapitem, który możesz zrobić [zaczynając od pierwszego wiersza] V}). A potem wpisz :. Powinno to przywołać coś :'<,'>z wiersza poleceń.

:'<'>normal A.

Wykonuje normal A.się na wybranych liniach. normal A.wykonuje się A.jak naciśnięcia klawiszy w trybie normalnym. Spowoduje to Awysunięcie znaku .na końcu każdej z wybranych linii.

user41805
źródło
3

Jeśli chcesz dodać kropkę na końcu wszystkich linii:

:%norm A.

lub możesz użyć wyszukiwania i zastąpić:

:%s/$/./

% to cały plik, $ to koniec wiersza

folow
źródło
Ponieważ @ vim.ryan poprosił o blok tekstu zamiast całego pliku, :1,4s/$/./ który zastępuje ostatni znak kropką w wierszach od pierwszego do czwartego włącznie.
rjt
1

Aby było trochę bardziej ogólne, możesz zarejestrować makro w jednym wierszu, a następnie odtworzyć je w każdym wierszu w wybranym wizualnie zakresie.

Zapisz makro do rejestru (rejestr q w tym przykładzie):

qqA.<Esc>q

Następnie możesz wizualnie wybrać linie, na których chcesz operować:

Vip

Następnie odtwórz makro w każdej linii (zakres zostanie automatycznie wypełniony):

:'<,'>norm @q
Zach Ingbretsen
źródło