【问题标题】:Delete from the current cursor position to a given line number in vi editor在 vi 编辑器中从当前光标位置删除到给定的行号
【发布时间】:2011-09-17 02:14:29
【问题描述】:

如何在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。在某些情况下,指定行号而不是计算块内的行数也会更快。

【问题讨论】:

标签: vi editing


【解决方案1】:

您可以使用 d63G 之类的内容从当前行删除到第 63 行。

【讨论】:

  • 哦,正常模式下的解决方案 - 更好!
  • 添加到这里,如果你想删除第 45 到 64 行,你可以:45,64d
【解决方案2】:

要从 a 删除到 b 使用

:a,bd

从当前到b使用

:,bd

(代码中的 ab 替换为您的数字)

【讨论】:

  • 优秀。我能够执行“:.,63d”来执行上面的删除示例。多谢了!
【解决方案3】:

与接受的答案相同,但输入速度稍快:

d63gg 从当前行删除到第 63 行。

【讨论】:

    【解决方案4】:

    为什么要计算行数?转到您要删除的最后一行并通过键入ma 将其标记为标识符“a”。然后转到要删除的第一行并键入d'a 进行删除以标记“a”。砰!

    【讨论】:

    • 不起作用(vim 7.4.160,CentOS)。也许它需要一些扩展或特殊配置。
    【解决方案5】:

    在 Vi 中删除一行代码:

    n: 是来自行号

    m: 是行号

    1. 从当前行到给定的行号-

      :,md

    2. 从/到特定行号

      :n,md

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2018-04-14
      • 2016-04-25
      • 2011-07-05
      • 2018-09-04
      • 2021-10-21
      • 2011-12-07
      • 1970-01-01
      • 2011-03-08
      相关资源
      最近更新 更多