it-swarm-ru.tech

Удалить от курсора до конца строки в `vi`

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

334
Falmarri

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

499
Tok

Как уже упоминали другие: вы можете использовать d$ или D (shift-d) удалить с позиции курсора до конца строки.

Что я обычно нахожу более полезным, это c$ или C (shift-c), поскольку он будет удалять из позиции курсора до конца строки и переведет вас в режим [INSERT].

54
Brad Johnson

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

38
Gilles 'SO- stop being evil'

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

Я использую Dp (удалить до конца строки, затем положить его обратно), перехожу в конец какой-то другой строки, затем снова p, чтобы вставить тот же текст в конце этой другой строки. Работает чудеса в конфигурационных файлах, где вам нужно поместить несколько сложных URL-адресов в двух или более местах.

21
Bruce Ediger

Чтобы удалить диапазон строк после позиции курсора, 3D удалится из курсора до конца строки, а также полностью из следующих двух строк (т.е. удалит 3 строки после позиции курсора).

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

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

Используя команду 3D будет выводить:

If there's a cursor
go
1
Nick Bull

Я думаю, что ярлык режима вставки может пригодиться.

В режиме вставки, возможно, было бы лучше начать изменять до конца строки (поместите это на свой ~/.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.

1
SergioAraujo