簡體   English   中英

vim:在一行中插入連續的數字

[英]vim: insert successive numbers in a row

假設我想初始化這個元組:

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

我相信我可以用 vim 做如下操作。

1/ 輸入:

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

2/ 視覺選擇逗號行,然后輸入一個棘手的鍵序列,它會寫出連續的數字

有誰知道我應該輸入的棘手的按鍵序列是什么?

較新的 vim(從版本 8 開始)支持在可視模式下遞增,而不是使用 VisIncr。 所以我會選擇:

  • Ctrl-V並用逗號標記該列
  • I 1 ESC將每一列初始化為 1
  • 視覺塊選擇倒數第二行(使用例如g v j
  • g Ctrl-A使每一行按順序遞增。

這個可以用解決

  1. 將光標放在第一個數字上: 3Gf1
  2. 開始錄音: qq
  3. lyT數字lyT ,向下移動j ,粘貼P ,增加^ACtrl + A ),停止記錄q
  4. 對其余行執行宏: 20@q

一起: 3Gf1lyT(jP^Aq20@q


為了避免計數,並應用增量直到沒有更多行,您還可以將其轉換為遞歸宏

  1. 將光標定位在第一個數字上: 3Gf1
  2. 清除宏寄存器q並開始錄制: qqqqq
  3. lyT數字lyT ,向下移動j ,粘貼P ,增加^ACtrl + A ),重新調用宏@q 一起: lyT(jP^A@q

使用VisIncr插件:

  • Ctrl-v並用逗號標記該列(即,您想要數字的位置)
  • Shift-i 1 Esc - 這應該插入一列1 s
  • g v - 標記1 s 的列
  • :I - 這應該將1的列更改為數字1 ... 21

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM