Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 在Vim中自动添加/生成内容_Loops_Vim_Text_Editing - Fatal编程技术网

Loops 在Vim中自动添加/生成内容

Loops 在Vim中自动添加/生成内容,loops,vim,text,editing,Loops,Vim,Text,Editing,我有一个巨大的数字列表,我想在每一行的末尾添加内容。是这样的: 之前: 123123 123123 13234 124125 12634 5234 之后: 123123, 1 123123, 2 13234, 3 124125, 4 12634, 5 5234, 6 有两点: 我知道:range s/oldpattern/newpattern/将用新模式替换旧模式 我知道for I在范围内(begin,end)| something | endfor可以生成这些额外的数字 然而,我不知道是否

我有一个巨大的数字列表,我想在每一行的末尾添加内容。是这样的:

之前:

123123
123123
13234
124125
12634
5234
之后:

123123, 1
123123, 2
13234, 3
124125, 4
12634, 5
5234, 6
有两点:

  • 我知道
    :range s/oldpattern/newpattern/
    将用新模式替换旧模式

  • 我知道
    for I在范围内(begin,end)| something | endfor
    可以生成这些额外的数字


  • 然而,我不知道是否有可能将它们结合起来做我想做的事情(或者是否有不同的方法来做)。有人知道如何自动添加这些额外值吗?我很确定使用Vim是可能的,但我不知道怎么做。

    您可以通过直观地选择区域然后键入来实现这一点

    :s/$/\=', '.(line('.')-line("'<")+1)<CR>
    
    :s/$/\=','(行('.')-行(“'我愿意这样做

    nl(默认情况下)将跳过空行编号

    或者作为一个单一的

    :exec "%!nl"|%s/\v^\s*(\d+)\s+(.*)$/\2, \1/g
    


    请注意,
    nl
    不为空行编号,因此可能需要使用
    nl-ba
    ,具体取决于所需的行为。
    :exec "%!nl"|%s/\v^\s*(\d+)\s+(.*)$/\2, \1/g
    
    :%!awk '{print $0", "NR}'
    
    :%!perl -lpe '$_.=", $."'