Jak zamienić pojedyncze słowo pod kursorem?

144

Jak zamienić słowo pod kursorem w Vimie.

Więc zamiast używać dwwtedy isłowa, a potem Esc, czy istnieje prostsza kombinacja, która zastąpi słowo pod kursorem?

powiedz
źródło

Odpowiedzi:

251
ciw

(zmień słowo wewnętrzne) zmieni całe słowo pod kursorem. Porównać z

cw

która zmieni tylko słowo z bieżącej pozycji kursora . Aby uzyskać więcej informacji, zobacz to pytanie / odpowiedź SO .

Brian Agnew
źródło
Jak poradzić sobie z sytuacją, gdy słowo zawiera kropki lub ukośniki (np. /usr/bin/bashLub 1222.333)? Wygląda na to, że vim interpretuje /i .jako koniec słowa i nie wybierze całego ciągu.
Alexander Cska
85

Często mam ochotę zastąpić jedno słowo innym, które wyszarpnąłem z innego miejsca. Problem z innych rozwiązań jest to, że jeśli spróbujesz zmienić słowo, wówczas obok pasta będzie się to słowo, które zostało usunięte z cw.

Spróbuj wykonać następujące czynności:

1 "This first word should overwrite the second"

yiw     yank inner word (copy word under cursor, say "first").
...     Move the cursor to another word (say "second").
viwp    select "second", then replace it with "first". 

Mam nadzieję, że tego właśnie szukałeś.

Eteryczny
źródło
7
Działa ładnie, ale tylko wtedy, gdy trzeba dokonać wymiany once. Jeśli muszę zamienić kilka second' by pierwszych (w twoim przykładzie), skopiowane słowo stanie się secondpo pierwszej zamianie.
ViFI
32

ciw

c   change
iw  inner word

Spowoduje to usunięcie słowa pod kursorem (nawet jeśli kursor znajduje się gdzieś w środku słowa) i przejście do trybu wstawiania.


Zobacz także dokumentację Vima w celach informacyjnych:

:help c
:help text-objects
Xophmeister
źródło
17

Jeśli chcesz zmienić słowo z poprzednio wyszarpanym słowem, istnieje inne rozwiązanie viwp(po wyszarpnięciu pierwszego słowa).

ciwusuwa poprzednie słowo i przełącza cię w tryb wstawiania tam, gdzie było. Ale wtedy możesz użyć ctrl+r, 0do wstawienia zawartości rejestru 0 (który zawiera poprzednio wyszarpane słowo).

Więc:

yiw
[move to next word]
ciw
ctrl+r
0

Działa to lepiej niż viwpdlatego, że po pierwszym użyciu możesz wielokrotnie dokonywać wymiany za pomocą .. Nie przełącza się również w tryb wizualny i na krótko wyróżnia.

Connor
źródło
1
Nie jestem pewien, co masz na myśli, że nie zmienia trybów, wydaje się, że jest odwrotnie, ale może właśnie tego chciałeś, aby pozostać w trybie wstawiania. Ale dużą zaletą jest to, że (w przeciwieństwie do viwp) można to zrobić kilka razy za pomocą jednego szarpnięcia. Dzięki!
Palo
Och, masz rację, myślałem o wejściu w tryb wizualny, edytowany. Nie zdawałem sobie sprawy, że to ograniczenie viwp- nawet .go nie powiela.
Connor
3
Jest to zdecydowanie najlepsze rozwiązanie, gdy już wyszarpnęliśmy słowo zastępcze.
mljrg,
1
To jest odpowiedź! Możliwość korzystania .z tego jest świetna!
izzy