Kiedy muszę zastąpić słowo innym słowem, które szarpię, zwykle używam przepływu pracy, który wydaje mi się nienaturalny:
Powiedzmy, że mam ten tekst:
foo bar buzz
I chcę szarpać foo
i zastąpić bar
to, co szarpnąłem wcześniej.
Po pociągnięciu foo
widzę następujące opcje:
opcja 1
Ustaw kursor za
bar
pomocąw
Umieścić
foo
z przodubar
zP
Umieść kursor na
b
pozostałychbar
i usuń słowo za pomocąde
Opcja 2
Umieść kursor na pasku za pomocą
w
Użyj,
de
aby usunąćbar
Umieść zawartość rejestru 0 za pomocą
"0P
(ponieważ skasowałembar
,foo
nie jest już dostępny za pomocą prostegop
)
Oba sposoby wydają mi się zbyt skomplikowane i jestem pewien, że istnieje bardziej skuteczny sposób na osiągnięcie tego działania, ale nie mogę znaleźć sposobu. Pomysł ten polegałby na połączeniu operacji usuwania i wstawiania w jednym lub przynajmniej unikaniu trzymania usuniętego słowa w rejestrze yank, tak że mogę wstawić pożądane słowo za pomocą prostego p
.
Wiem też, że tryb zastępowania został uruchomiony, R
ale nie pozwala na umieszczenie tego, co zostało zerwane.
TL; DR : Jak zamienić słowo z treścią rejestru Yank?
źródło
Znalazłem inny sposób, aby to zrobić, jest trochę podobny do opcji 2, ale ma tę zaletę, że nie psuje stanu rejestrów.
Chodzi o to, aby użyć „ rejestru czarnej dziury ”: rejestr ten jest dostępny za pośrednictwem
"_
i ma tę szczególną cechę, że można do niego pisać, ale nie można z niego czytać, więc podobnie jak czarna dziura rejestr ten całkowicie usuwa wszystko, co się w nim znajduje. Tutaj możemy go użyć, więcfoo
pozostaje w rejestrze Yank nawet pobar
usunięciu.Dzięki temu rozwiązaniu przepływ po szarpnięciu
foo
byłby:bar
zW
(lub dowolny potrzebne słowo oczywiście)bar
pomocą"_de
foo
z rejestru szarpnięć za pomocąP
. Rejestr szarpnięć wciąż zawiera,foo
odkądbar
wszedł do czarnej dziury.Nie jestem pewien, czy jest to lepsze rozwiązanie niż w przypadku @ Carpersmokera ( W przypadku vimgolfa @Carpetsmoker wygrywa ), ale nie wiedziałem o rejestrze czarnej dziury i pomyślałem, że niektórzy mogą być zainteresowani jego poznaniem.
źródło
Przejdź na początek „foo”. Prasa
yiw
. To szarpie wewnętrzne słowo.Idź do „paska” naciskając literę
w
. Następnie wybierz i odciągnij:viw"0p
Używam
ciw
iyiw
dużo.źródło
iw
jest interesujące, ale twoje rozwiązanie jest w rzeczywistości takie samo jak jedno z CarpetSmokera: wizualnie wybierając drugie słowo i wstaw pierwsze. Myślę również, że twoje rozwiązanie działałoby z prostymp
zamiast z użyciem"0
rejestru.Gdy kursor znajduje się w dowolnym miejscu słowa,
yiw
- szarpnij słowo i zapisz je w0
rejestrze.Przejdź do słowa docelowego, które chcesz zastąpić
ciw
usunie słowo i przejdzie w tryb wstawiania.ctrl-r
. Pojawi"
się okienko z prośbą o wywołanie rejestru.0
wklei wyszarpane słowo.Wyszarpane słowa są (normalnie!) Przechowywane w
0
rejestrze. Zobacz,:registers
aby wyświetlić zapisane bufory. To może wydawać się długą procedurą, IMHO otwiera drzwi do znacznie bardziej wyrafinowanych sztuczek rejestrowych.źródło