vim:如何复制一条记录

时间:2014-08-28 08:44:31

标签: vim macros

我有超过40000条记录:

------
18
1,5,0.33
6,10,0.34
11,15,0.36
16,20,0.37
21,25,0.40
26,30,0.44
------

我想改变那样:

------
18 1,5,0.33
18 6,10,0.34
18 11,15,0.36
18 16,20,0.37
18 21,25,0.40
18 26,30,0.44
------

知道:

  • 第一个数字后的行数是可变的,但总是> 1
  • 我知道录制宏,所以我想录制一个并播放40000次。我只想从用户的角度了解我必须键入哪些键

2 个答案:

答案 0 :(得分:1)

遵循序列应该做的伎俩

dd<cr>
:%norm I<c-r>*<bck> <cr>

其中<cr>是回车符,<c-r>是Ctrl + r

细分如下

  • dd删除包含您要插入
  • 字符的第一行
  • :%norm对文件的其余部分执行正常命令
  • I负责插入线前。
  • <c-r>*粘贴已删除的第一行内容,包括换行符。
  • <bck> <cr>清理换行符并添加空格

如果您想输入它:

  • 向下 vey 向下
  • 控制 v
  • /^- 向上
  • I Ctrl r* Backspace

说明:

  • 转到第一个号码:向下v:选择模式; e转到
  • 一词的末尾
  • 复制:y
  • 视觉模式blockwise: Ctrl v
  • 搜索以-开头的第一行,然后向上/^- 向上
  • 插入模式,复制到所有行并粘贴当前缓冲区:I Ctrl r*

答案 1 :(得分:1)

另一种选择:

DJ
:%s/^/<c-r>" /