2011-12-13 2 views
26

Я был на линии 93 и понял, что хочу удалить строку 89. Я набрал :d89 в надежде, что строка 89 wold будет удалена. Это не сработало.Vim: Вы можете удалить определенный номер строки из другой строки?

Кто-нибудь знает, как можно достичь такого взаимодействия? Я являюсь удобным пользователем Vim, но еще не сделал прыжок для написания плагинов ...

Спасибо.

ответ

47

Первый адрес команды двоеточия (например, номер строки).

:89d 

Обратите внимание, что это также приведет к перемещению по месту изменения. Вы можете использовать ``, чтобы вернуться назад.

Если вы предпочитаете, чтобы это была одна команда, вы можете определить пользовательскую команду. например:

command! -range -nargs=0 Delete <line1>,<line2>d|norm `` 

Это определяет команду под названием Delete, которая удаляет адресуемый диапазон (<line1>,<line2>d), а затем переходит обратно (norm ``).

Вы можете назвать это нравится:

:89Delete 

Вы действительно можете вызвать его с каким-либо уникальным префиксом, так что вы можете быть в состоянии получить его до:

:89D 
+0

гул ... почему бы просто не попробовать предложение и посмотреть, что произойдет? – woliveirajr

+0

+1, команда здесь состоит из «адреса» (который может быть номером строки) и команды. –

+0

@Ethan Поведение похоже на переход на 89, а затем его удаление. Это довольно распространенное поведение для команд двоеточия. ': s' оставляет вас на линии последней подстановки, например. –

1

:89d который удалить 89-й если вы находитесь в другой строке.

:89,91d, которые удаляют 89-ю 90-ю и 91-ю строки, когда вы находитесь в другой линии.

это также функция, даже если вы используете vrapper в затмении, вместо стандартного vim.

Смежные вопросы