Löschen Sie im vi-Editor von der aktuellen Cursorposition auf eine bestimmte Zeilennummer


108

Wie lösche ich einen Textblock aus der aktuellen Cursorzeile zu einer bestimmten Zeilennummer in vi?

Beispielsweise:

 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%">

In Vim würde ich normalerweise den visuellen Auswahlmodus verwenden, aber ich habe Vim auf diesem Server nicht zur Verfügung. In einigen Fällen wäre es auch schneller, eine Zeilennummer anzugeben, als zu zählen, wie viele Zeilen sich innerhalb des Blocks befinden.


Antworten:


210

Sie können so etwas wie d63GLöschen aus der aktuellen Zeile bis Zeile 63 verwenden.


5
Oooh, eine Lösung im normalen Modus - noch besser!
Seanhodges

50
Wenn Sie die Zeilen 45 bis 64 löschen möchten, tun Sie Folgendes: 45,64d
ThinkCode

110

Zum Löschen von a nach b verwenden

:a,bd

von aktuell bis b verwenden

:,bd

(wobei a und b im Code durch Ihre Nummern ersetzt werden)


1
Ausgezeichnet. Ich konnte ":., 63d" ausführen, um das obige Löschbeispiel auszuführen. Danke borrible!
Seanhodges

13

Entspricht der akzeptierten Antwort, ist jedoch etwas schneller einzugeben:

d63gg wird aus der aktuellen Zeile in Zeile 63 gelöscht.


8

Warum Linien zählen? Gehen Sie zur letzten Zeile, die Sie löschen möchten, und markieren Sie sie, indem Sie eingeben, mawelche sie mit der Kennung "a" "markiert". Gehen Sie dann zur obersten Zeile, die Sie löschen möchten, und geben Sie d'a"Löschen" ein, um "a" zu markieren. Bam!


Funktioniert nicht (vim 7.4.160, CentOS). Vielleicht braucht es eine Erweiterung oder eine spezielle Konfiguration.
Deutscher Khokhlov

6

So löschen Sie einen Zeilenblock in Vi:

n: ist von der Zeilennummer

m: ist zur Zeilennummer

  1. Von der aktuellen Zeile bis zu einer bestimmten Zeilennummer

    :,md

  2. von / zu bestimmten Zeilennummern

    :n,md

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.