Как заменить одно слово под курсором?

Как заменить слово под курсором в Vim.

Итак, вместо использования dw then i тогда слово, а затем Esc, есть ли более простая комбинация для замены слова под курсором?

Ответ 1

ciw

(изменение внутреннего слова) изменит все слово под курсором. Сравните с

cw

который только изменит слово из текущей позиции курсора. Для получения дополнительной информации см. этот SO вопрос/ответ.

Ответ 2

Я часто обнаруживаю, что хочу заменить одно слово другим, которое я дернул из другого места. Проблема с другими решениями заключается в том, что если вы попытаетесь изменить слово, то следующей пастой будет то слово, которое вы удалили с помощью cw.

Попробуйте следующее:

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". 

Надеюсь, что вы искали.

Ответ 3

c i w

c   change
iw  inner word

Это приведет к удалению слова под курсором (даже если курсор находится где-то посередине слова) и введите режим вставки.


Также см. документацию Vim для справки:

:help c
:help text-objects

Ответ 4

Если вы хотите изменить слово с ранее выдернутым словом, есть другое решение для viwp (как только вы выдернули первое слово).

ciw удаляет предыдущее слово и переводит вас в режим вставки, где он был. Но тогда вы можете использовать ctrl+r, 0 чтобы вставить содержимое регистра 0 (который содержит ранее выдернутое слово).

Так:

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

Это работает лучше, чем viwp потому что после первого использования вы можете несколько раз выполнить замену с помощью . , Он также не переключается в визуальный режим и не выделяется кратко.

Ответ 5

Попробуйте cw - как в слове "изменить слово".

Используйте http://linuxmoz.com/vi-commands-cheat-sheet/ или любой другой лист обмана как ссылку.