2012-11-06 16 views
10

Wiele razy odkrywam, że będę chciał wkręcić zawartość między cytatami i wkleić je w innym zestawie cytatów. Na przykład weź ten kod na przykład.Vim zastępuje cudzysłowy

var foo = 'bar', 
    baz = 'buz'; 

bym normalnie zrobić yi' wewnątrz 'bar' szarpać Słowo poprzeczkę.

Jak zastąpić buz moim szarpnięciem? Wiem, że jedną z opcji jest wykonanie di'"0P, po prostu zastanawiam się, czy istnieje łatwiejsze rozwiązanie, które przeoczyłem.

Odpowiedz

22

Z kursorem w dowolnym miejscu na słowie buz, vi'p, aby wizualnie wybrać wewnątrz cytatów, a następnie umieścić zawartość najnowszego szarpnięcia.

+0

Skałasz ... dzięki! –

+1

@ShaneStillwell, przeczytaj ': help text-objects', aby dowiedzieć się, jak to działa. Możesz również użyć wtyczki "surround": http://goo.gl/s9x4F. –

+1

to również działa, gdy kursor znajduje się na znaku cudzysłowu '' ' –

2

Potrzebuję tego tak często, że napisałem wtyczkę, aby uprościć i umożliwić maksymalną prędkość: ReplaceWithRegister.

Ta wtyczka oferuje polecenie "dwa w jednym" gr, które zastępuje tekst objęty obiektem {motion}/text, całą linią (liniami) lub bieżącą selekcją zawartością rejestru; stary tekst zostaje usunięty do rejestru czarnych dziur, tj. zniknął. Transparentnie obsługuje wiele przypadków narożnych i umożliwia szybkie powtórzenie za pomocą standardowej komendy .. Jeśli Ci się nie spodoba, na jego stronie znajdują się linki do alternatyw.

+0

Myślę, że mógłbym się do tego przyzwyczaić. To jest zarówno pozytywne, jak i ryzykowne :) – sehe

0

Należy również pamiętać, że po wymianie zawartości w trybie wizualnym zastępowana zawartość będzie teraz rejestrowana. polecenie: reg wyświetli to. W twoim przykładzie, polecenie p wklei buz w edytorze.