Jak usunąć blok tekstu z bieżącego wiersza kursora do wiersza o podanym numerze w vi?
Na przykład:
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%">
W Vimie zwykle używałbym do tego trybu wizualnego wyboru, ale nie mam Vima do dyspozycji na tym serwerze. W niektórych przypadkach szybsze byłoby również określenie numeru wiersza niż liczenie, ile wierszy znajduje się w bloku.
Odpowiedzi:
Możesz użyć czegoś takiego jak
d63G
usuwanie z bieżącej linii do linii 63.źródło
Aby usunąć od a do b użyj
od prądu do b użytkowania
(gdzie a i b w kodzie są zastąpione Twoimi liczbami)
źródło
Taka sama jak zaakceptowana odpowiedź, ale nieco szybsza do wpisania:
d63gg
usuwa z bieżącego wiersza do wiersza 63.źródło
Po co liczyć wiersze? Przejdź do ostatniej linii, którą chcesz usunąć, i zaznacz ją, wpisując,
ma
co „oznacza” ją identyfikatorem „a”. Następnie przejdź do pierwszego wiersza, który chcesz usunąć, i wpiszd'a
tekst do usunięcia, aby zaznaczyć „a”. Bam!źródło
Aby usunąć blok linii w Vi:
n
: pochodzi z numeru liniim
: Jest do numeru liniiOd bieżącej linii do danego numeru linii-
:,md
od / do określonych numerów linii
:n,md
źródło