Blok wizualny wstaw nową linię

10

Dużo pracuję z trybem blokowania wizualnego, który wydaje mi się bardzo przydatny do szybkich zmian w wielu liniach.

Ale mam problem z wstawieniem nowego wiersza w taki sposób:

Wybór jest odnotowany jako []:

Some [t]ext
Some [t]ext
Some [t]ext
Some [t]ext
Some [t]ext

Naciskam Ii mogę dodać tekst do wstawienia przed t:

Some other text
Some [t]ext
Some [t]ext
Some [t]ext
Some [t]ext

Kiedy naciskam <Esc>, otrzymuję:

Some other text
Some other text
Some other text
Some other text
Some other text

Ale teraz, jeśli nacisnę <CR>zamiast tekstu, który chcę dodać, nowa linia zostanie wstawiona zgodnie z potrzebą, ale nie dla innych wierszy. Wynik jest następujący:

Some 
text
Some text
Some text
Some text
Some text

Czy wiesz, dlaczego to nie działa?

Uwaga: ponieważ to działa ci rnie jestem pewien, dlaczego to nie działa ...

nobe4
źródło
Jeśli intencją jest utworzenie nowej linii po znaku dla wybranych linii, możemy wypróbować makro. Przejdź do n-tej kolumny i wprowadź nową linię i powtarzaj ją do wyboru
SibiCoder
Tak, może też zadziałać podstawienie, ale moim celem jest wypracowanie sposobu działania w trybie blokowania wizualnego.
nobe4
4
Niestety nie można tego zrobić w trybie blokowania wizualnego. Zamiast tego użyj substytucji lub nagrania.
romainl

Odpowiedzi:

4

Blok wizualny Itak nie działa. Najlepsze, co możesz zrobić, to coś takiego.

Podświetl kolumnę w trybie blokowania wizualnego ( [b]oznaczając podświetlony znak jak w pytaniu):

aaa[b]bb
aaa[b]bb
aaa[b]bb
aaa[b]bb
cccccc

Wykonaj substytucję w obszarze wizualnym za pomocą \%V:

:'<,'>s/\%V/\r/

Vim wstawi '<,'>za ciebie po naciśnięciu :, więc nie musisz wpisywać tego bitu.

A wynik:

aaa
bbb
aaa
bbb
aaa
bbb
aaa
bbb
cccccc

Jeśli musisz często dzielić linie w bloku wizualnym, są duże szanse, że będzie on łatwo dostępny w twojej historii i nie będziesz musiał robić nic więcej niż podświetlanie :<up><return>.

Antony
źródło
Przyjemne użycie \%Vnawet jeśli nie jest to, co chciałem. Zaakceptuję to (ale to, co chcę, wydaje się w każdym razie niemożliwe ^^)
nobe4