Jak usunąć słowo i przejść do trybu wstawiania w Vimie?


98

W normalnym trybie mogę nacisnąć Ctrl+, Eco usuwa resztę bieżącego słowa i przechodzi do trybu wstawiania.

Chcę usunąć całe słowo, niezależnie od pozycji kursora (oczywiście w słowie).

Odpowiedzi:


166

Możesz użyć „zmień słowo wewnętrzne”, wpisując „ciw”, aby usunąć słowo, na którym znajduje się kursor.

Polecenia "inner" i "a" są świetne w Vimie, spróbuj także "ci {" wewnątrz bloku {} lub "ca {", jeśli również chcesz usunąć znaki {}. Aby przetłumaczyć te polecenia na angielski i lepiej je zapamiętać, spróbuj: "zmień wewnętrzny {blok" i "zmień {blok".

Dokumentacja pod adresem http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects


Zamiast funkcji „ciw” można użyć „caw”.
Amjith

Podczas gdy „caw” i „ciw” zastąpią całe słowo, po prostu „cw” zmieni się od aktualnej pozycji kursora do końca bieżącego słowa.
Drew Stephens

Zmieniłem odpowiedź z mówienia o „co {” na „ca {”, jak przypomniał komentarz jinxed_coders. Moje stare dostosowywanie implementuje polecenia „(a) <>” jako polecenia „(o) uter <>”.
Kaali,

19
ciwi cawnie są dokładnie takie same: ciwusuwa tylko słowo, cawusuwa również spację na końcu.
Roberto Bonvallet

5
: pomaga obiektom w vimie przeczytać więcej na temat tego typu wyborów.
Aaron

19

Odpowiedź na pytanie uzupełniające: viwp

v    -> start visual mode
iw   -> select the 'inner word'
p    -> paste - in visual mode it replaces the visually selected text.

3
Jak można to zrobić wiele razy z rzędu? Za każdym razem, gdy wklejasz, bufor wypełnia się słowem, które wkleiłem.
Ben Gartner,

1
@BenGartner Znalazłem to na wiki Vim Tips : Użyj, yiwaby skopiować bieżące słowo, umieść kursor na słowie do zastąpienia, użyj ciw<C-r>0. Następnie możesz umieścić kursor na następnym słowie i użyć, .aby powtórzyć zamianę.
siegi

@BenGartner Jeśli wszystko próbują zrobić to zamienić wszystkie wystąpienia WORD_A z WORD_B, a następnie po prostu użyć Vima w trybie Ex :%s/a/b/g. amoże być dokładnym tekstem lub wyrażeniem regularnym i bjest tym, czego zastąpisz wszystkie dopasowania a. Możesz testować wyrażenia regularne w /trybie vima . Zastąp %numerem wiersza lub zakresem, jeśli nie chcesz podstawiać we wszystkich wierszach.
Braden Best

8

Drugie pytanie: bPldw

Spowoduje to, w kolejności, przejście do początku bieżącego słowa, wstawienie domyślnego rejestru przed kursorem, przejście do następnego znaku (prowadzącego poza koniec właśnie wstawionego tekstu) i usunięcie pozostałej części słowo.


5
spowoduje to również usunięcie spacji po słowie. Powinien być bPlde.
0x89

10
Nie, powinno byćviwp
aehlke

3

Na pierwsze pytanie bcwteż działa. Oznacza „ bpotwierdzenie na początek słowa, czmień word”. Ale myślę, że ciwjest bardziej niezapomniany, co oznacza „ cmień inner word”, po prostu tylko jeden krok.

W przypadku drugiego pytania dotyczącego „zastąp przy użyciu wklejania” moim rozwiązaniem jest "_diwP. To dsuĹ inner word do rejestru nie obchodzi i paste zawartość domyślnego Rejestru. Zaletą jest to, że możesz wielokrotnie wkleić domyślny rejestr, ponieważ nie byłby on zanieczyszczony. To mały kompleks, więc mapuję go jako nnoremap ,r "_diwP.


2

Lub możesz użyć sekwencji klawiszy, bdwiaby usunąć bieżące słowo i przejść do trybu INSERT.


1
Możesz użyć, bcwaby przejść do początku bieżącego słowa, a następnie zmienić je, co pozostawia tryb wstawiania.
Hank Gay

Jeśli kursor znajduje się już na pierwszym znaku słowa, spowoduje to usunięcie poprzedniego słowa.
Warren Pena,

3
@WarrenPena W takim przypadku po prostu użyj dwi. Uważaj tylko, aby gliniarze tego nie zauważyli, ponieważ DWI jest nielegalne w większości stanów.
Braden Best
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.