Jak zamienić tekst wewnątrz () na wcześniej szarpany tekst?

9

Załóżmy, że wcześniej Fnordszarpnąłem tekst i że mój kursor znajduje się Bna linii:

M:mock(Baz)

Jak mogę zmienić tekst wewnątrz () za pomocą wcześniej szarpanego tekstu?

Obecnie często popełniam błąd, wykonując:

  • di( aka „delete inside ()”
  • SHIFT + P

co pozostawia mi dokładny tekst, ponieważ usunięty tekst zostanie przeniesiony do rejestru.

Chcę mieć:

M:mock(Fnord)
k0pernikus
źródło
1
@Rich Podane pytanie obejmuje bardziej ogólny przypadek zastąpienia wyszarpniętego słowa. Myślę, że to pytanie jest nieco bardziej szczegółowe i nie przyciąga tych samych odpowiedzi.
k0pernikus
Protip: 0Rejestr będzie zawierał ostatni szarpany tekst. :h quote0
Peter Rincker,
1
Ten sam pomysł z zaakceptowanej odpowiedzi na wspomniane pytanie można zastosować tutaj. Po ustawieniu kursora w nawiasach wystarczy nacisnąć vi)p. Jest to to samo, co w tej odpowiedzi, tylko z i)obiektem tekstowym zamiast wobiektu tekstowego,
EvergreenTree
1
@ k0pernikus Obawiam się, że będziemy musieli zgodzić się nie zgodzić w tej sprawie. Dla mnie ważną częścią obu pytań jest zamiana, a nie obiekt tekstowy zastosowany do jej zastosowania.
Bogaty

Odpowiedzi:

13

Możesz użyć zaznaczenia wizualnego, aby zaznaczyć tekst do zastąpienia, a następnie wkleić go w następujący sposób:

vi(p

vi(wybiera Baz (ponieważ jest zamknięty w nawiasach), pwkleja Fnord nad nim.

Spowoduje to jednak przyciągnięcie Baz do rejestru po wklejeniu, co może nie być tym, czego chcesz.

Alex
źródło
10

O ile nie określisz rejestru, p(lub P) użyje ostatniego, który został wypełniony. Rejestr nienazwany ""zawiera ostatnio szarpany lub usunięty tekst (chyba że określono inny rejestr, np. Z "ay), ale są one również "0wpisywane dla znaków yank lub "1usuwania / zmian. Zobacz rejestry .

Jeśli ostatni tekst został szarpany y, możesz go wkleić z 0rejestru za pomocą "0P. Jeśli został usunięty, możesz uzyskać do niego dostęp za pomocą 2rejestru za pomocą "2P( "1jest teraz Baz).

Alternatywnie możesz uniknąć bałaganu w swoich rejestrach i usunąć je z rejestru blackhole"_ :

"_di(P
Steve
źródło
3

Jeśli instalowanie wtyczek jest opcją, możesz użyć yankstack.vim . Następnie możesz zachować bieżący przepływ pracy:

Obecnie często popełniam błąd, wykonując:

  • di (alias „delete inside ()”
  • SHIFT + P
  • Alt + p - przejście do poprzedniego szarpnięcia
mMontu
źródło
1

Zakładając, że „Fnord” jest w rejestrze, możesz to zrobić (z kursorem na początku wiersza) f(ci(<c-r>a

Christian Brabandt
źródło