Удалить блок текста в Vim

Поэтому я могу удалить строку текста +, используя d d (нормальный режим), и весь текст ниже перемещается вверх по строке.

Я могу перейти в визуальный режим, используя Ctrl + v

Если я тогда скажу do 0 > C+v > jjj > $ > d, текст из 4 строк будет удален, но строки не будут удалены.

Как удалить блок текста и удалить строки одновременно, чтобы любые предыдущие строки текста перемещались вверх до курсора?

Ответ 1

Для чего-то вроде этого я обычно использую shift+v, j j j... d, но вы также можете удалить с помощью текстовых объектов.
См. :h text-object. Несколько примеров:

di" - удалить внутри "
dap - удалить вокруг абзаца

И вы могли бы, конечно, использовать другие команды, чем d, например c или v.
То, что я использую все время ci( и ci" для редактирования содержимого внутри () и "".

Более интересные примеры с использованием текстовых объектов и визуального режима можно найти здесь:
Какая ваша наиболее продуктивная комбинация с Vim?


Вы также можете использовать, т.е. 4dd, как упомянуто FDinoff, или диапазон, упомянутый Йенсом. Однако в большинстве сценариев я лично считаю, что использование визуальной линии (shift+v) более гибкое, и вам не нужно подсчитывать строки или что-то еще. Легко запомнить, вы сразу видите результат, вы не пропустите линии подсчета, и он будет работать, даже если вы находитесь сверху/снизу на экране.

Ответ 2

Используйте 4dd для удаления 4 строк текста.

или

Используйте визуальный блок линии. <S-v> затем перейдите к последней строке, которую вы хотите удалить, затем нажмите d

Ответ 3

Если блок действительно большой, и вы не можете беспокоиться о подсчете количества строк для удаления, но вы знаете, что номер первой и последней строки (:set number помогает), вы всегда можете перейти в режим ex и

 :3,1415d

для удаления из строки 3 по строке 1415.

Ответ 4

<C-v> помещает вас в режим визуального блока. В этом режиме вы действуете на прямоугольник ( "блок" в "режиме визуального блока" ), который может или не может покрывать строки, которые вы хотите удалить. d действует только на символы, содержащиеся в этом блоке, оставляя строки как есть.

То, что вы хотите, - это "режим визуальной линии", где вы конкретно действуете на линиях. Из нормального режима или из любого другого визуального режима нажмите V (Shift + v), переместите курсор, чтобы определить свой выбор, затем нажмите d.

Ответ 5

удалить 4 строки текста, начиная с строки, в которой находится курсор:

4dd

или используйте команду ex d с адресной адресами, например:

:3,24d 

будет удалять строки 3-24.

.

.

.

Здесь некоторые полезные специальные символы при использовании адресной ссылки с ex:

 .       : current line
 $       : last line
 /text/  : next occurrence of text
 ?text?  : previous occurrence of text
 *       : all text currently on screen
 %       : entire file
 +n      : next n lines
 -n      : previous n lines

Ответ 6

или d with motion например

d3j

также команда :d также является гибкой. проверьте справку