viエディターで現在のカーソル位置から特定の行番号まで削除する


108

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を自由に使用できません。場合によっては、ブロック内の行数を数えるよりも、行番号を指定する方が速いでしょう。


回答:


210

d63G現在の行から63行目までを削除するようなものを使用できます。


5
ああ、通常モードのソリューション-さらに良い!
seanhodges

50
64を介して削除45行にしたい場合は、これに追加するには、実行します。45,64d
ThinkCode

110

aからbに削除するには

:a,bd

現在からのBの使用

:,bd

(ここで、ABのコードでは、あなたの番号に置き換えられます)


1
優れた。上記の削除例を実行するために ":。、63d"を実行することができました。恐ろしいありがとう!
seanhodges

13

受け入れられた回答と同じですが、少し速く入力します:

d63gg 現在の行から行63までを削除します。


8

なぜ行数を数えるのですか?削除する最後の行に移動し、ma識別子「a」で「マーク」を入力してマークを付けます。次に、削除する一番上の行に移動し、d'a「a」をマークするために削除するために入力します。バム!


動作しません(vim 7.4.160、CentOS)。おそらくそれはいくつかの拡張または特別な設定が必要です。
ドイツのホフロフ2018年

6

Viで行のブロックを削除するには:

n:行番号から

m:ある行番号

  1. 現在の行から指定された行番号まで-

    :,md

  2. 特定の行番号から/へ

    :n,md

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.