2011-11-23 14 views
7

Ostatnio byłem anking i p utworzyłem dużo kodu, który musi zostać nieco zmieniony (zwykle tylko proste zastąpienie). Mogę ręcznie wybrać go po wklejeniu lub na dłuższe bloki Przypuszczam, że mógłbym spojrzeć na liczbę wklejonych linii (20 new lines) i użyć 20:s..., ale biorąc pod uwagę, że jest to vim, wydaje się, że powinien istnieć łatwiejszy/szybszy sposób Zrób to.Vim zmienia tekst jako lub natychmiast po jego wstawieniu

Czy istnieje sposób, aby wybrać lub wykonać zastępowanie tekstu, ponieważ jest to p ut?

Odpowiedz

8

Natychmiast po wykonanie p, że [ i ] znaki odnoszą się do początku i końca linii numerów wklejonym regionie (dotyczy podczas y również). Zobacz pomoc dla '[ i '], aby uzyskać wyjaśnienie.

W ten sposób można użyć tych znaków, aby utworzyć zakres, w którym można pracować z :s, pod numerem :'[,']s///. To zadziała w regionie, który został po prostu wyrwany lub wklejony. Oczywiście, nie jest krótka, ale jeśli ci na tym zależy, możesz ją zmapować. Być może coś w rodzaju nnoremap <Leader>p p:'[,']s/.

+1

Doskonale, dzięki. Kolejny przykład tego, jak wszystko, co możesz sobie wyobrazić, może zrobić vim. – Kevin

3

Chris Morgan już opublikował najlepsze rozwiązanie. Ale możesz również dokonać pewnych manipulacji bezpośrednio na tekście w rejestrze. Domyślną rejestr dla yank jest ", więc można zrobić coś takiego:

:let @" = substitute(@",'someword', 'somedifferentword','g') 

następnie wkleić zmieniony tekst rejestru. Nie jest to tak łatwe w manipulowaniu związanym z kontekstem linii w tekście rejestru wielowierszowego, ponieważ tekst w rejestrze jest pojedynczym ciągiem z jednym wzorcem rozpoczęcia (^) i jednym końcem ($). Ale nadal może być przydatne.

Pomyślałem, że go tam wyrzucę, ponieważ czasami to robię.

+0

Dobrze wiedzieć, dzięki. – Kevin

Powiązane problemy