在 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
(代码中的 a 和 b 替换为您的数字)
【讨论】:
优秀。我能够执行“:.,63d”来执行上面的删除示例。多谢了!【参考方案3】:与接受的答案相同,但输入速度稍快:
d63gg
从当前行删除到第 63 行。
【讨论】:
【参考方案4】:为什么要计算行数?转到您要删除的最后一行并通过键入ma
将其标记为标识符“a”。然后转到要删除的第一行并键入d'a
进行删除以标记“a”。砰!
【讨论】:
不起作用(vim 7.4.160,CentOS)。也许它需要一些扩展或特殊配置。【参考方案5】:在 Vi 中删除一行代码:
n
: 是来自行号
m
: 是到行号
从当前行到给定的行号-
:,md
从/到特定行号
:n,md
【讨论】:
以上是关于在 vi 编辑器中从当前光标位置删除到给定的行号的主要内容,如果未能解决你的问题,请参考以下文章