将搜索到的字符串移动到文件末尾或文件开头
有一个类似的问题:g /<pattern>/m0 -> beginning of the file.
:g /<pattern>/m$ -> beginning of the file.
有没有办法搜索并移动到一行的开头。学习这个的任何教程链接?
谢谢
答案 0 :(得分:1)
您可以仅使用:substitute
在当前行内进行移动,而不需要:g
。您需要扩充<pattern>
,以便捕获之前/之后的文本(在\(...\)
组中)。这使您可以“重新排列”替换部件中的匹配。
移动(首先,最后一次使用.*
而不是.\{-}
)匹配到开头:
:%s/^\(.\{-}\)\(<pattern>\)/\2\1/
转到结束:
:%s/\(<pattern>\)\(.*\)$/\2\1/
答案 1 :(得分:0)
:g
命令的语法允许您在示例包含m0
和m$
的位置放置任何Ex命令。 :move
命令(简称:m
)可以将任意数字作为参数,还有其他可能性。
如果您想在第17行之后移动一行,请使用:m17
。如果您想在第17行之前移动它,请使用:m16
或:m17-
(:m17-1
的缩写)。我经常发现在正常模式下标记一行(ma
或:mark a
)然后
:g/<pattern>/m'a-
:help :global
:help :move
:help {address}