Ответ 1
Вы можете использовать что-то вроде d63G
для удаления из текущей строки до строки 63.
Как удалить блок текста из текущей строки курсора в заданный номер строки в vi?
Например:
49 <j:set var="changeSet" value="${build.changeSet}" /> <----- delete from here (cursor position)
50 <j:if test="${changeSet!=null}">
51 <j:set var="hadChanges" value="false" />
52 <TABLE width="100%">
53 <TR><TD class="bg1" colspan="2"><B>CHANGES</B></TD></TR>
54 <j:forEach var="cs" items="${changeSet.logs}" varStatus="loop">
55 <j:set var="hadChanges" value="true" />
56 <j:set var="aUser" value="${cs.hudsonUser}"/>
57 <TR>
58 <TD colspan="2" class="bg2">${spc}Revision <B>${cs.revision}</B> by
59 <B><j:choose>
60 <j:when test="${aUser!=null}">${aUser.displayName}: </j:when>
61 <j:otherwise>${cs.user}: </j:otherwise>
62 </j:choose></B>
63 <B>(${cs.msgAnnotated})</B> <----- to here (line 63)
64 </TD>
65 </TR>
66 <j:forEach var="p" items="${cs.paths}">
67 <TR>
68 <TD width="10%">
В Vim я обычно использовал режим визуального выделения для этого, но у меня нет Vim в моем распоряжении на этом сервере. Также было бы проще указать номер строки, а не подсчитывать, сколько строк внутри блока в некоторых случаях.
Вы можете использовать что-то вроде d63G
для удаления из текущей строки до строки 63.
Чтобы удалить из a в b, используйте
:a,bd
от текущего до b использовать
:,bd
(где a и b в коде заменены вашими номерами)
То же, что и принятый ответ, но немного быстрее, чтобы напечатать:
d63gg
удаляется из текущей строки в строку 63.
Зачем подсчитывать строки? Перейдите к последней строке, которую вы хотите удалить, и пометьте ее, набрав ma
, который "маркирует" его идентификатором "a". Затем перейдите к верхней строке, которую вы хотите удалить, и введите d'a
для удаления, чтобы отметить "a". Бам!
Чтобы удалить блок строк в Vi:
n
: находится от номера строки
m
: номер строки
От текущей строки до заданного номера строки -
:,md
от/до определенных номеров строк
:n,md