Vim搜索并移动搜索到的字符串

时间:2014-01-28 22:42:33

标签: vim

将搜索到的字符串移动到文件末尾或文件开头

有一个类似的问题
:g /<pattern>/m0 -> beginning of the file.
:g /<pattern>/m$ -> beginning of the file.

有没有办法搜索并移动到一行的开头。学习这个的任何教程链接?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以仅使用:substitute在当前行内进行移动,而不需要:g。您需要扩充<pattern>,以便捕获之前/之后的文本(在\(...\)组中)。这使您可以“重新排列”替换部件中的匹配。

移动(首先,最后一次使用.*而不是.\{-})匹配到开头:

:%s/^\(.\{-}\)\(<pattern>\)/\2\1/

转到结束:

:%s/\(<pattern>\)\(.*\)$/\2\1/

答案 1 :(得分:0)

:g命令的语法允许您在示例包含m0m$的位置放置任何Ex命令。 :move命令(简称:m)可以将任意数字作为参数,还有其他可能性。

如果您想在第17行之后移动一行,请使用:m17。如果您想在第17行之前移动它,请使用:m16:m17-:m17-1的缩写)。我经常发现在正常模式下标记一行(ma:mark a)然后

是有用的
:g/<pattern>/m'a-

:help :global
:help :move
:help {address}