vim:连续插入连续数字

时间:2016-12-06 08:51:52

标签: vim

让我们说我想初始化这个元组:

t = (
    #(id, name)
     (1, 'aasd'),
     (2, 'bsfd'),
     (3, 'asf'),
         ...
     (21, 'aefae'),
)

我相信我可以按照vim的说法进行操作。

1 /输入:

t = (
    #(id, name)
     (, 'aasd'),
     (, 'bsfd'),
     (, 'asf'),
         ...
     (, 'aefae'),
)

2 /视觉选择昏迷行,并键入一个棘手的键序列,它将写入连续数字

有谁知道我应该键入什么是棘手的键序列?

3 个答案:

答案 0 :(得分:10)

而不是使用VisIncr较新的vims(从版本8开始)支持在可视模式下递增。所以我会选择:

  • Ctrl-V 并使用逗号标记列
  • I 1 ESC 将每列初始化为1
  • 视觉阻止选择第二到最后一行(例如 g v j
  • g Ctrl-A 让每一行按顺序递增。

答案 1 :(得分:4)

这可以通过

解决
  1. 将光标定位在第一个数字上:3Gf1
  2. 开始录制:qq
  3. 抽出号码lyT,向下一个j,粘贴P,递增^A Ctrl + A ),停止录制q
  4. 执行剩余行的宏:20@q
  5. 所有在一起:3Gf1lyT(jP^Aq20@q

    为避免计数,并应用增量直到没有更多行,您还可以将其转换为递归宏

    1. 将光标定位在第一个数字上:3Gf1
    2. 清除宏注册q并开始录制:qqqqq
    3. 抽出号码lyT,向下一个j,粘贴P,递增^A Ctrl + A ),重新调用宏@q。所有在一起:lyT(jP^A@q

答案 2 :(得分:1)

使用VisIncr插件:

  • Ctrl-v 并用逗号标记该列(即您想要数字的位置)
  • Shift-i 1 Esc - 这应插入一列1 s
  • g v - 标记1 s
  • 的列
  • :I - 这应该将1的列更改为数字1 ... 21