Załóżmy, że wcześniej Fnord
szarpnąłem tekst i że mój kursor znajduje się B
na 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)
cut-copy-paste
normal-mode
register
k0pernikus
źródło
źródło
0
Rejestr będzie zawierał ostatni szarpany tekst.:h quote0
vi)p
. Jest to to samo, co w tej odpowiedzi, tylko zi)
obiektem tekstowym zamiastw
obiektu tekstowego,Odpowiedzi:
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),p
wkleja Fnord nad nim.Spowoduje to jednak przyciągnięcie Baz do rejestru po wklejeniu, co może nie być tym, czego chcesz.
źródło
O ile nie określisz rejestru,
p
(lubP
) 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ż"0
wpisywane dla znaków yank lub"1
usuwania / zmian. Zobacz rejestry .Jeśli ostatni tekst został szarpany
y
, możesz go wkleić z0
rejestru za pomocą"0P
. Jeśli został usunięty, możesz uzyskać do niego dostęp za pomocą2
rejestru za pomocą"2P
("1
jest terazBaz
).Alternatywnie możesz uniknąć bałaganu w swoich rejestrach i usunąć je z rejestru blackhole
"_
:źródło
Jeśli instalowanie wtyczek jest opcją, możesz użyć yankstack.vim . Następnie możesz zachować bieżący przepływ pracy:
źródło
Zakładając, że „Fnord” jest w rejestrze, możesz to zrobić (z kursorem na początku wiersza)
f(ci(<c-r>a
źródło