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


144

Як замінити слово під курсором у Vim.

Отже, замість того, dwщоб iпотім використовувати слово, а потім Esc, чи є більш просте поєднання для заміни цього слова під курсором?

Відповіді:


251
ciw

(змінити внутрішнє слово) змінить ціле слово під курсором. Порівняйте з

cw

що змінить слово лише з поточного положення курсору . Для отримання додаткової інформації дивіться це питання / відповідь.


Як впоратися з ситуацією, якщо слово містить крапки або косої риси (наприклад, /usr/bin/bashабо 1222.333)? Схоже, інтерпретується vim /і .як кінець слова, і не вибереться весь рядок.
Олександр Цска

85

Я часто відчуваю, що хочу замінити одне слово іншим, яке я потягнув з іншого місця. Проблема з іншими рішеннями є те , що якщо ви намагаєтеся змінити слово, то ваша наступна паста буде цим словом , що ви видалили з 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". 

Сподіваюся, що це ви шукали.


7
Це працює чудово, але лише в тому випадку, якщо потрібно зробити заміну once. Якщо мені доведеться замінити пару second' by перших` (у вашому прикладі), скопійоване слово стає secondпісля першої заміни.
ViFI

32

ciw

c   change
iw  inner word

Це видалить слово під курсором (навіть якщо курсор знаходиться десь посередині слова) і введе режим вставки.


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

:help c
:help text-objects

17

Якщо ви хочете змінити слово за допомогою раніше вирезаного слова, є ще одне рішення viwp(після того, як ви вирвете перше слово).

ciwвидаляє попереднє слово і переводить вас у режим вставки там, де воно було. Але потім ви можете використовувати ctrl+r, 0для вставки вміст регістра 0 (який містить раніше вибите слово).

Так:

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

Це працює краще, ніж viwpчерез те, що після першого використання ви зможете повторно виконувати заміну .. Він також не переходить у візуальний режим і коротко виділяється.


1
Не впевнений, що ви маєте на увазі, що він не змінює режими, навпаки, це здається, але, можливо, саме так ви хотіли залишатися у режимі вставки. Але велика перевага полягає в тому, що це (всупереч viwp) можна зробити кілька разів лише одним щупом. Дякую!
Пало

Ой ви праві, я думав перейти у візуальний режим, відредагований. Я не розумів, що це обмеження viwp- навіть .не дублює це.
Коннор

3
Це, безумовно, найкраще рішення, коли ми вже зірвали слово заміни.
mljrg

1
Це відповідь! Можливість використовувати .з цим чудова!
izzy

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.