Удалить от курсора до конца строки на VI


302

Я знаю, что, вероятно, просматривал это миллион раз во всех документах VI, которые я прочитал, но я не могу найти команду удаления от курсора до конца строки.


3
У вас здесь есть опечатка - вы говорите «конец строки» в названии, но «конец слова» в вопросе.
Каскабель

Ответы:


450

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


Да, я знаю dw, но думаю, я просто предполагал, что будет команда «удалить оставшуюся часть этой строки». Например моя линия ip=|10.1.1.1с |тем , что расположение курсора. Есть ли команда, которая удалит все 10.1.1.1?
Фальмарри

3
@Falmarri - Я прошу прощения, я неправильно понял ваш вопрос. Для этого есть команда:d$
Ток

84
D (Shift + d) также является синонимом для d $.
Нет

5
@ Энди, работа состоит в том, чтобы удалить курсор от конца строки. Если вы считаете, что удаление больше, чем «выполнение работы», вы также можете просто использовать, :!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двигается к началу следующего ш Орд; так deудаляет конец текущего слова, и dwдополнительно удаляет следующий пробел.


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

@ Жиль, ты прав. Я только что попробовал 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.