Видалити від курсору до кінця рядка на VI


301

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


3
У вас тут помилка друку - у заголовку ви кажете "кінець рядка", а "кінець слова".
Каскабель

Відповіді:


449

Команда dwвидалить із поточного положення курсору до початку наступного символу слова. Команда d$(зауважте, що це знак долара, а не 'S') видалить із поточного положення курсору до кінця поточного рядка. Dє синонімом для d$.


Так, я знаю dw, але, мабуть, я просто припустив, що буде команда "видалити решту цього рядка". Наприклад моя лінія ip=|10.1.1.1з |тим , що розташування курсора. Чи є команда, яка видалить усі 10.1.1.1?
Falmarri

3
@Falmarri - Вибачте, я, мабуть, неправильно зрозумів ваше запитання. Для цього є команда:d$
Ток

84
D (Shift + d) також є синонімом d $.
Ніс

5
@Andy, завдання - видалити з курсору до кінця рядка. Якщо ви вважаєте, що видалити більше, ніж це "виконувати роботу", ви можете також просто скористатися :!rm -f %і потім :q!. Це видаляє весь файл.
Wildcard

2
@Amir Просто використовуй d^('d' + caret) ... в основному d + будь-який символ, який зазвичай рухає курсор, я думаю, але я сам навчаюся Vim, тому я можу помилитися з цим.
JakeD

41

Як вже згадували інші: ви можете використовувати d$або D( shift- d) для видалення з позиції курсору до кінця рядка.

Що зазвичай вважаю кориснішим, це c$або C( shift- c), оскільки воно видалиться з позиції курсора до кінця рядка і переведе вас у режим [INSERT].


2
НІШЕ !!! На Dмою думку, це набагато краще, ніж для більшості людей, тому що це не поверне вам пробіл у кінці рядка.
Ілля Лінн

Чому ця відповідь прихована аж донизу? Це та функціональність, яку я дуже шукав, коли прийшов сюди.
M_M

@ElijahLynn це все одно не повинно бути проблемою. Vim має два основні способи ввести режим iвставки, який вставляється перед курсором, і aякий вставляє після курсору. Якщо ваш курсор знаходиться в кінці рядка і ви хочете вставити його в кінці рядка, ви можете просто скористатися a.
Лі Лі Райан

1
Мета - зробити це за одну операцію, а не за дві. Додаткові удари ключів = додаткове тертя.
Ілля Лінн

36

Однією з приємних речей про vi є його логічна структура команд. dпісля чого команда руху d вибирає до цілі цього руху. $переміщується до кінця рядка (мнемонічний: як у регулярних виразах). Так d$видаляється до кінця рядка. Аналогічно eпереходить до е- го поточного слова і wпереходить до початку наступного w ; тому deвидаляє кінець поточного слова і dwдодатково видаляє наступний пробіл.


1
@gioele Я використовую <kbd>для фактичних ключів, а не для послідовностей команд. Наприклад <kbd>Ctrl</kbd>+<kbd>C</kbd>, але d$.
Жиль

@Gilles Ви маєте рацію. Я щойно спробував d ^, і він видалився з позиції курсору до рядка.
ka3ak

Я завжди використовував (d) elete (a) (w) ord для видалення слів :)
Błażej Michalik

20

Можливо, ви хочете використовувати D. Перемістіть курсор на перший символ, який ви хочете видалити, а потім натисніть shift-D. Все пропало. Насправді він знаходиться в буфері вирізання за замовчуванням, тому ви можете P або p вставити його назад.

Я використовую Dp (видалити до кінця рядка, потім повернути його назад), переміщуся до кінця іншого рядка, а потім p знову, щоб вставити той самий текст у кінці цього іншого рядка. Творить чудеса у конфігураційних файлах, де потрібно помістити деякі складні URL-адреси у двох чи більше місцях.


Це, мабуть, мінімальний Vim, який він все одно використовує.
полемон

0

Я думаю, ярлик режиму вставки може стати в нагоді.

У режимі вставки, можливо, було б краще почати змінювати до кінця рядка (поставте це на своєму ~/.vimrc):

inoremap <C-l> <C-o>C

Отже, у вас, як було сказано, Dу звичайному режимі та Ctrl+ lу режимі вставки. Як ви бачите, у вас також є Cте, що починається зміна до кінця рядка.

<C-o> ......... insert normal keystroke in insert mode

Я вибрав Ctrl- lтому що lпід вашими пальцями. Ctrl- kвже використовується для вставки диграфів.

Я шукав :h i_Ctrlдеякі безкоштовні вкладки клавіатури, і це фактично більша проблема, коли справа стосується створення нових ярликів для виконання дій у vim.


0

Щоб видалити діапазон рядків після позиції курсора, 3Dбуде видалено з курсору до кінця рядка, а також наступні два рядки повністю (тобто видаляє 3 рядки після положення курсору).

наприклад для наступного тексту (курсор представлений як |),

If there's a cursor |in the line
here
we
go

За допомогою команди 3Dвиведемо:

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