Как заменить слово под курсором в Vim.
Итак, вместо того, чтобы использовать dw
затем i
слово, а затем Esc
, есть ли более простая комбинация для замены слова под курсором?
Ответы:
Я часто обнаруживаю, что хочу заменить одно слово другим, которое я выдернул из другого места. Проблема с другими решениями является то , что если вы пытаетесь изменить слово, то ваша следующая паста будет этим словом , что вы удалили с 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".
Надеюсь, это то, что вы искали.
once
. Если мне нужно заменить пару second' by
первых` (в вашем примере), скопированное слово станет second
после первой замены.
ciw
c change
iw inner word
Это удалит слово под курсором (даже если курсор находится где-то посередине слова) и перейдет в режим вставки.
Также см. Документацию Vim для справки:
:help c
:help text-objects
Если вы хотите изменить слово на слово, которое ранее было перетащено, есть другое решение viwp
(после того, как вы перетащили первое слово).
ciw
удаляет предыдущее слово и переводит вас в режим вставки, где оно было. Но затем вы можете использовать ctrl+r, 0
для вставки содержимого регистра 0 (который содержит ранее извлеченное слово).
Так:
yiw
[move to next word]
ciw
ctrl+r
0
Это работает лучше, чем viwp
потому, что после первого использования вы можете повторно выполнить замену .
. Он также не переключается в визуальный режим и не выделяется на короткое время.
viwp
) можно проделать несколько раз с помощью одного рывка. Благодарность!
viwp
- даже .
не дублирует.
.
с этим отличная!
Попробуйте cw
- как в «поменять слово».
Используйте http://linuxmoz.com/vi-commands-cheat-sheet/ или любую другую шпаргалку в качестве справки.
/usr/bin/bash
или1222.333
)? Похоже, vim интерпретирует/
и.
как конец слова и не выбирает всю строку.