Как удалить слово и перейти в режим вставки в Vim?

В обычном режиме я могу нажать Ctrl + E, который удаляет оставшуюся часть текущего слова и переходит в режим вставки.

Я хочу удалить все слово, независимо от позиции курсора (в пределах слова, конечно).

Ответ 1

Вы можете использовать "изменить внутреннее слово", набрав "ciw", чтобы удалить слово, в котором находится ваш курсор.

Команды "inner" и "a" велики в Vim, также попробуйте "ci {" внутри блока {} или "ca {", если вы также хотите удалить символы {}. Чтобы перевести эти команды на английский, чтобы лучше запомнить их, попробуйте: "изменить внутренний {блок] и" изменить {блок].

Документация на http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects

Ответ 2

Ответьте на свой следующий вопрос: viwp

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

Ответ 3

Для второго вопроса: bPldw

Это приведет вас к началу текущего слова, вставьте регистр по умолчанию перед курсором, перейдите к следующему символу (пропустив конец текста, который вы только что вставили), и удалите остальное слово.

Ответ 4

Или вы могли бы использовать последовательность клавиш bdwi, чтобы удалить текущее слово и перейти в режим INSERT.

Ответ 5

По первому вопросу, bcw также работает. Это означает "b ack для начала слова, c hange w ord". Но я думаю, что ciw более запоминающимся, что означает "c hange i nner w ord", всего лишь один шаг.

Во втором вопросе о "replace using paste" мое решение "_diwP. Это d elete i nner w ord в регистр, который вам неинтересен, и p задерживать содержимое регистра по умолчанию. Преимущество состоит в том, что вы можете вставлять регистр по умолчанию много раз, потому что он не будет загрязнен. Это комплекс litte, поэтому я отображаю его как nnoremap ,r "_diwP.