Vim:在当前光标位置插入一列的宏

时间:2019-05-26 17:46:33

标签: vim macros

我有多种文件想要转换为逗号分隔变量(CSV)格式。

例如:

      DATE     V1  COLOR SNOW FALL TEMPERATURE
2019-01-03 3.1415    red     33 mm          -2
2019-01-04 2.7182 orange     35 mm          -3
2019-01-05 1.6180 yellow     44 mm           2
2019-01-06 4.6692  green    120 mm           1
2019-01-07 1.4142   blue     51 mm         -10

将成为:

      DATE,     V1,  COLOR, SNOW FALL, TEMPERATURE
2019-01-03, 3.1415,    red,     33 mm,          -2
2019-01-04, 2.7182, orange,     35 mm,          -3
2019-01-05, 1.6180, yellow,     44 mm,           2
2019-01-06, 4.6692,  green,    120 mm,           1
2019-01-07, 1.4142,   blue,     51 mm,         -10

我可以在vim 命令模式中手动执行以下操作:

:%s/\%[column number]c/,/

在我的示例中,“ [列号]”为11时,将在文件的所有行的“ DATE”中的“ E”之后插入“,”。

我想使用一个宏(最好在我的“ .vimrc”中),这样我就可以将光标放在特定的列上并执行该宏,而不是进入命令模式。我在查看如何获取游标的当前列值时遇到麻烦。

1 个答案:

答案 0 :(得分:0)

据我了解,您想要这样的东西:

nnoremap <silent><F12> :execute '%s/\%' . col('.') . 'c/,/'<CR>