Я знаю, что, вероятно, просматривал это миллион раз во всех документах VI, которые я прочитал, но я не могу найти команду удаления от курсора до конца строки.
У вас здесь есть опечатка - вы говорите «конец строки» в названии, но «конец слова» в вопросе.
Каскабель
Ответы:
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].
ОТЛИЧНО!!! По Dмоему мнению, это намного лучше, чем для большинства людей, поскольку это не сдвигает вас назад на пробел в конце строки.
Элайджа Линн
Почему этот ответ скрыт здесь? Это та функциональность, которую я действительно искал, когда пришел сюда.
M_M
@ElijahLynn это не должно быть проблемой в любом случае. В Vim есть два основных способа войти в режим iвставки, который вставляется перед курсором, и aкоторый вставляется после курсора. Если ваш курсор находится в конце строки, и вы хотите вставить в конце строки, вы можете просто использовать a.
Ли Райан
1
Цель состоит в том, чтобы сделать это за одну операцию, а не за две. Дополнительные нажатия клавиш = дополнительное трение.
Элайджа Линн
36
Одна из приятных сторон vi - это логическая структура команд. dсопровождаемый командой движения d выбирает цель этого движения. $перемещается в конец строки (мнемоника: как в регулярных выражениях). Так что d$удаляет до конца строки. Точно так же, eдвигаюсь к й ю текущего слова, и wдвигается к началу следующего ш Орд; так deудаляет конец текущего слова, и dwдополнительно удаляет следующий пробел.
@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.
Чтобы удалить диапазон строк после позиции курсора, 3Dбудут удалены от курсора до конца строки, а также полностью следующие две строки (т.е. удаляются 3 строки после позиции курсора).
например, для следующего текста (курсор представлен как |),
Ответы:
Команда dwбудет удалена из текущей позиции курсора в начало следующего символа слова. Команда d$(обратите внимание, это знак доллара, а не 'S') удалит из текущей позиции курсора до конца текущей строки. Dэто синоним для d$.
источник
dw
, но думаю, я просто предполагал, что будет команда «удалить оставшуюся часть этой строки». Например моя линияip=|10.1.1.1
с|
тем , что расположение курсора. Есть ли команда, которая удалит все10.1.1.1
?d$
:!rm -f %
а затем:q!
. Это удаляет весь файл.d^
('d' + caret) ... в основном d + любой символ, который обычно перемещает курсор, я думаю, но я сам изучаю Vim, так что я могу ошибаться.Как уже упоминали другие: вы можете использовать
d$
илиD
( shift- d) для удаления от позиции курсора до конца строки.Обычно я нахожу более полезным
c$
илиC
( shift- c), потому что он будет удалять из позиции курсора до конца строки и переводит вас в режим [INSERT].источник
D
моему мнению, это намного лучше, чем для большинства людей, поскольку это не сдвигает вас назад на пробел в конце строки.i
вставки, который вставляется перед курсором, иa
который вставляется после курсора. Если ваш курсор находится в конце строки, и вы хотите вставить в конце строки, вы можете просто использоватьa
.Одна из приятных сторон vi - это логическая структура команд.
d
сопровождаемый командой движения d выбирает цель этого движения.$
перемещается в конец строки (мнемоника: как в регулярных выражениях). Так чтоd$
удаляет до конца строки. Точно так же,e
двигаюсь к й ю текущего слова, иw
двигается к началу следующего ш Орд; такde
удаляет конец текущего слова, иdw
дополнительно удаляет следующий пробел.источник
<kbd>
для реальных ключей, а не для последовательности команд. Например<kbd>Ctrl</kbd>+<kbd>C</kbd>
, ноd$
.Возможно, вы захотите использовать D. Переместите курсор на первый символ, который хотите удалить, затем нажмите Shift-D. Все прошло На самом деле, он находится в буфере вырезания по умолчанию, так что вы можете вставить его обратно в P или p.
Я использую Dp (удалить до конца строки, затем положить его обратно), перехожу в конец какой-то другой строки, затем снова p, чтобы вставить тот же текст в конец этой другой строки. Работает чудеса в конфигурационных файлах, где вам нужно поместить несколько сложных URL-адресов в двух или более местах.
источник
Я думаю, что ярлык режима вставки может пригодиться.
В режиме вставки может быть лучше начать менять до конца строки (поместите это на свой
~/.vimrc
):Таким образом, у вас, как уже было сказано, Dв обычном режиме и Ctrl+ lв режиме вставки. Как вы видите, у вас также есть, Cчто начинает меняться до конца строки.
Я выбрал Ctrl- lпотому что
l
под вашими пальцами. Ctrl- kуже используется для вставки диграфов.Я искал
:h i_Ctrl
некоторые бесплатные сочетания клавиш, и это на самом деле большая проблема, когда речь идет о создании новых ярлыков для выполнения действий в vim.источник
Чтобы удалить диапазон строк после позиции курсора, 3Dбудут удалены от курсора до конца строки, а также полностью следующие две строки (т.е. удаляются 3 строки после позиции курсора).
например, для следующего текста (курсор представлен как
|
),Использование команды 3Dвыведет:
источник