问题:
如下文档:
1 "00003d18b58ae0e60a567ca9956e43993de2c49965e423e9fa9719d887a10c95",
2 "0000aa3782882660e71d3f12df57534ba469d331d6d8bfcb7e1a5875c8cd3de1",
3 "0000cd1b059df91f5bfd78d8af3b3b1faae2053e5aaa11954e16ddf7213d0d19",
4 "0000de0fa08182bb32e022ac604c606eb2232fa67707ab4d714aa29b7464e47f",
5 "00017d9f09b6ccd1d7d5cf3da378ae4a0fd7a01330f58ac7a77d3f036ab7484c",
6 "000184348abf5ea9d22e74316aa3472f3b067161faa7b1b4e89e82e97bdf8e92",
7 "00025afd4206e67839b47f962206b52129e788cbbddccf4c92d3c340f9b90685",
8 "0002fb8ff23699c461764694084c4cf84284e9c082290bf1b2cff2c168a38939",
9 "0003c0b80757b2c785ba7e0a5328046185d199927ec3704b67a77b93281dbd90",
....
解决方式:
:g/^/ s/\n//|j|j
解释:
:g/^/
可以理解为 在当前整个文档中执行 之后的 命令,这里是s/\n// ;而 |
用来分割命令,用于在一个行中同时输入多个命令,当前是向下移动一行再移动一行,是两行,这样下次替换时,开始标记的位置是4行之后;这里按需要的行数可以加 n个 |j
这里有个注意:不可以写成:g/^/ s/\n//|2j 或者 :g/^/ s/\n//|jj
vim执行会递归死掉,自己也没有搞明白原因,先mark一下吧
Vim在实际执行 global
命令时,会先查找所有匹配 {pattern} 的行,并对匹配结果进行标记,最后对每一个标记的行执行 Ex 命令。
参考:https://vimjc.com/vim-extract-odd-or-even-line.html
没有评论:
发表评论