Jeśli nie masz nic przeciwko naciśnięciu innej kombinacji niż cw
, wtedy uważam, że możesz łatwo uzyskać to, czego chcesz, definiując skrót. Co możesz zrobić, to umieścić następujące
nmap <leader>a "1yiw:let @/=@1^Mciw
w twoim .vimrc
pliku. Zauważ, że ^M
jest to przechwycenie klucza powrotu, a nie znaków ^
i M
. Możesz to zrobić, naciskając Ctrl+ Vw trybie wstawiania, a następnie Enter. Teraz, po zdefiniowaniu tego, naciśnięcie <leader>a
będzie działało tak samo, jak cw
teraz, ale teraz słowo (przed zmianą) będzie w twoim „rejestrze ostatniego wyszukiwania” (to znaczy /
rejestrze), więc naciśnij npo dokonaniu zmiany i zwróceniu do trybu normalnego przeniesie Cię do następnego wystąpienia. Podobnie naciśnięcie Nspowoduje przejście do poprzedniego wystąpienia.
Skrót Możesz oczywiście wybrać inny skrót niż <leader>a
, ale uważam, że jest to bardzo dostępny skrót. Osobiście mam ustawione <leader>
na ,
tak, że wystarczy nacisnąć ,a następnie a, ale to dlatego, że nie używam amerykańską klawiaturę, tak, że mój \jest ukryty nieco (wierzę \jest domyślnym <leader>
).
Wyjaśnienie Pomysł jest naprawdę prosty. Podciągnij słowo pod kursorem do rejestru wyszukiwania, /
a następnie wykonaj cw
. Tak nmap <leader>a "/yciw
właśnie dążyłem, ale niestety nie sądzę, że można szarpać do rejestru wyszukiwania, więc obejście polega na szarpnięciu słowa pod kursorem do 1
rejestru, a następnie ustawieniu /
rejestru tak, a następnie cw
. Podobnie "1yiw
część, która podciąga wewnętrzne słowo pod kursorem do rejestru 1
. Jeśli nie wiesz o wewnętrznych słowach, możesz to sprawdzić :help iw
. Następnie :let @/=@1
przechwytywanie Enterumieszcza zawartość 1
rejestru w /
. W tym momencie niNdziała jako następne i poprzednie wystąpienie słowa pod kursorem, a następnie ciw
jest wykonywane tak, że słowo pod kursorem jest usuwane, a Vim przechodzi w tryb wstawiania.
słowo kontra słowo wewnętrzne Właśnie zdałem sobie sprawę, że założyłem, że chcesz całe słowo pod curser, a nie tylko od curser i dalej. Dlatego użyłem iw
zamiast w
wszędzie. Jeśli tak nie jest, powinieneś użyć
nmap <leader>a "1yw:let @/=@1^Mcw
zamiast. Jeśli kursor znajduje się na pierwszej literze słowa, nie ma różnicy.
disclaimer Rozwiązanie to prawdopodobnie nie będzie działać dobrze, jeśli starają się używać go na coś, co zawiera rzeczy różni się od liter, na przykład poprzez podstawkę kursora na \
lub przez zastąpienie iw
przez iW
, ib
, is
lub ip
czy coś (choć nie wiem dlaczego byś chcesz tę funkcję z całymi zdaniami)
*
wyszukiwanie. Zwłaszcza sprawia, że*
wizualnie wybiera bieżące słowo bez poruszania kursorem. Po zainstalowaniu możesz zrobić,*ciw
aby umieścić stare słowo w rejestrze wyszukiwania i zmienić słowo. Następnie możesz użyćn
i.
.