在 vi 编辑器中从当前光标位置删除到给定的行号

Posted

技术标签:

【中文标题】在 vi 编辑器中从当前光标位置删除到给定的行号【英文标题】:Delete from the current cursor position to a given line number in vi editor 【发布时间】: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 >
 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">$spcRevision <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 >

在 Vim 中,我通常会为此使用可视选择模式,但我在此服务器上没有可供我使用的 Vim。在某些情况下,指定行号而不是计算块内的行数也会更快。

【问题讨论】:

相关:vi.stackexchange.com/questions/1915/… 【参考方案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: 是行号

    从当前行到给定的行号-

    :,md

    从/到特定行号

    :n,md

【讨论】:

以上是关于在 vi 编辑器中从当前光标位置删除到给定的行号的主要内容,如果未能解决你的问题,请参考以下文章

vi编辑器基本操作

vi编辑器

Linux vi删除移动复制命令

linux vi 编辑器

VI常用命令

Linux下采用VI编辑器删除复制或移动多行文本内容