Niełatwo znaleźć dobry tytuł dla mojego problemu.
Jestem świadom wstawiania przed blokiem tekstowym:
Ctrl- v wybierz tekst liniiI ESC
Teraz chciałbym to zrobić, ale także z wymianą części w moim wyborze bloku. Obecnie wykonuję dwie operacje
Ctrl- v wybierz blok x wróć, aby rozpocząć
Następuje sekwencja, o której wspomniałem powyżej.
Czy istnieje sposób na połączenie tych dwóch operacji poprzez wybranie ( Ctrl- v) bloku tylko raz?
Oto mały przykład:
Chciałbym przekształcić następujący blok
1 text
2 text
3 text
4 text
5 text
w
new text
new text
new text
new text
new text
wykonując tylko jedną „operację”.
visual-mode
replace
Patrick B.
źródło
źródło
Odpowiedzi:
Pisanie cpo wybraniu bloku zamiast xusunie tekst w bloku wyboru i przejdzie w tryb wstawiania. Po wpisaniu czegoś i wyjściu z trybu wstawiania powinieneś wprowadzić tę samą zmianę w każdej linii.
Próbować
Ctrl- v- wybierz blok - c- wstaw cokolwiek -Esc
źródło
Wyobraź sobie rząd trzech różnych liter drukowanych, takich jak powyższy.
^V
wybierając powyższe, nie mogłem zmienić wszystkichA
na ostatnią literę w rzędzie z powodu nierównej długości linii. Poprzednie litery blokowe działały poprawnie z:s/\%V1/T/g
„Poprzednia litera blokowa była literą„ T ”z„ 1 ”. Zmień/T/
na cokolwiek.Ale wybranie ostatniej litery blokowej pokazanej powyżej zmieniło tylko wszystkie „1” na „A” do punktu A *, a pozostałe pozostały jednymi.
* Najkrótsza linia.
Aby wszystkie linie były tej samej długości, wypełniłem je spacjami. (Jestem nowy w vimie, więc jestem pewien, że można napisać lepszy skrypt).
Uwaga: szczyt A rozpoczął się na linii 2.
Następnie
:s/\%V1/T/g
pracował zgodnie z reklamą na ostatniej literze blokowej w rzędzie.PS Przeczytałem, że
execute
powyższa linia powinna działać bez kropek, ale dla mnie nie działała.źródło