Vim复制行中的第一个单词,并在该单词后打印,每个单词之间用4个空格隔开
我正在使用Vim,希望复制某些行中的第一个单词,并简单地将其粘贴在该单词后,用4个空格分隔。下面是一个例子Vim复制行中的第一个单词,并在该单词后打印,每个单词之间用4个空格隔开,vim,Vim,我正在使用Vim,希望复制某些行中的第一个单词,并简单地将其粘贴在该单词后,用4个空格分隔。下面是一个例子 football run phone watch 届时将成为: football football run run phone phone watch watch 我只想申请第186至1413行。我可以使用Vim视觉模式执行此操作,但必须有一种更快的方法。您可以使用替换命令和行范围执行此操作: :186,1413s/^\w\+/& &/
football
run
phone
watch
届时将成为:
football football
run run
phone phone
watch watch
我只想申请第186至1413行。我可以使用Vim视觉模式执行此操作,但必须有一种更快的方法。您可以使用
替换
命令和行范围执行此操作:
:186,1413s/^\w\+/& &/
1861413
是要操作的行的范围(开始、结束)s
是substitute
(请参见:h substitute
)的缩写,它执行正则表达式搜索和替换<代码>^\w\+匹配任何单词字符(字母数字和下划线,不带空格)&&
将匹配的单词替换为自身、四个空格和自身
第一个单词后的任何文本都将被追加到行尾。您可以使用
:normal
命令:
:186,1413norm! yw4A ^[p
^[/code>你按ctrl-v
然后按ESC
对不起,我应该提到单词中的一些字符是特殊字符,例如ö,ë,ä,',所以直到这些字符被复制为止。所以单词“o'leary”只会被复制到“so only”o将被复制到行尾。而goöball一词,只有“go”将被复制到行尾。您可以使用[a-zA-Z\u0100-\uFFFF]
(per)而不是\w
来直接匹配Unicode字符,但这不会匹配撇号。您最好匹配第一个空格正则表达式。