Удалить блок текста в 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
также является гибкой. проверьте справку