我正在尝试使用vim在所有行中复制和粘贴模式但没有成功让我说我有一个看起来像这样的文本文件:
Hello name is Mishal
Hello name is jon
Hello name is dod
Hello name is joli
Hello name is sara
Run Code Online (Sandbox Code Playgroud)
我想复制每行中的最后一个模式或任何其他模式,然后将其放回同一行的中间。所以它看起来像:
Hello Mishal name is Mishal
Hello jon name is jon
Hello dod name is dod
Hello joli name is joli
Hello sara name is sara
Run Code Online (Sandbox Code Playgroud)
我知道它可以用 awk、sed、cut、paste 等其他工具来完成,但我需要用 vim 来完成
小智 5
你可以用宏来做。在正常模式下键入q
任何字母以在寄存器中开始宏录制a
。
然后将光标移动到行首并执行以下命令:
3wyw^wPa
Run Code Online (Sandbox Code Playgroud)
解释
3w
将光标移动到 3 个字yw
在注册表中复制单词^w
转到第一个非空白字符,然后向前移动一个单词(您需要键入^
两次才能使其正常工作。P
将单词粘贴到光标前的当前寄存器中a space
在最后一个单词后添加一个空格然后键入q
以停止录制宏。到达该行的开头,然后执行寄存器“a”中的宏@a
和/或@@
执行最后一个宏。
我敢肯定有更优雅的方法可以做到这一点,但这个工作得很好。
归档时间: |
|
查看次数: |
1153 次 |
最近记录: |