使用 vi/vim 复制部分行文本
Duplicate partial line text with vi/vim
我有如下两个列表:
abc.domain.com
defg.domain.com
hijklmn.domain.com
abc.domain.com/sub/
defg.domain.com/anothersub/
hijklmn.domain.com/thirdsub/
我需要让这两个列表显示如下:
abc.domain.com?ref=abc
defg.domain.com?ref=defg
hijklmn.domain.com?ref=hijklmn
abc.domain.com/sub/?ref=sub
defg.domain.com/anothersub/?ref=anothersub
hijklmn.domain.com/thirdsub/?ref=thirdsub
如何在 vi/vim 中完成此操作?
假设这两个列表在两个不同的缓冲区中。我们可以使用 vim 的 :s
命令来完成这项工作:
对于列表 1:
%s/\v([^.]+).*/&?ref=/
对于列表 2:
%s#\v.*/([^/]+)/$#&?ref=#
如果两个列表混合在一个缓冲区中,可以使用:g
命令只对某个目标进行替换。
我有如下两个列表:
abc.domain.com
defg.domain.com
hijklmn.domain.com
abc.domain.com/sub/
defg.domain.com/anothersub/
hijklmn.domain.com/thirdsub/
我需要让这两个列表显示如下:
abc.domain.com?ref=abc
defg.domain.com?ref=defg
hijklmn.domain.com?ref=hijklmn
abc.domain.com/sub/?ref=sub
defg.domain.com/anothersub/?ref=anothersub
hijklmn.domain.com/thirdsub/?ref=thirdsub
如何在 vi/vim 中完成此操作?
假设这两个列表在两个不同的缓冲区中。我们可以使用 vim 的 :s
命令来完成这项工作:
对于列表 1:
%s/\v([^.]+).*/&?ref=/
对于列表 2:
%s#\v.*/([^/]+)/$#&?ref=#
如果两个列表混合在一个缓冲区中,可以使用:g
命令只对某个目标进行替换。