如何用Vim完成整个列表?

时间:2016-03-11 21:55:06

标签: vim

我有一个要放在rails种子上的产品列表,我想用一个命令将括号逐个放在列表中,并将括号放在整个列表中?

例如:

 1. Dakine 
 2. Dale of Norway
 3. Dan Post


 1. ["Dakine"],    
 2. ["Dale of Norway"],
 3. ["Dan Post"],

我在帮助上搜索但没有找到任何关于。感谢。

3 个答案:

答案 0 :(得分:1)

你可以在Vim中录制一个宏并重复它。

如果您在1号,您可以执行以下操作:

  

qqf a [" Esc $ a"],Esc0jq

说明:

qq:在寄存器q中开始录制宏

f:转到第一个空格字符

a ::插入(上面的空格字符)

\[":插入这些字符

Esc:恢复正常模式

$:转到行尾

a:插入后(行尾)

"],:插入字符

Esc:恢复正常模式

0:跳转到行首

j:向下一行

如果你有100条这样的行,你可以100@q来实现你的结果。

答案 1 :(得分:1)

使用vim substitute命令:

:%s/.*/["&"]/

如果您不想对所有行进行操作,请选择要转换的行或记下相关的行号,然后在没有:s/.....的情况下键入%。你会看到实际上:'<,'>s这个范围代表了视觉上选择的行,vim会以可视模式自动添加它。

答案 2 :(得分:0)

在Atom上,您可以启用查找以在搜索中使用正则表达式(搜索字段旁边有一个按钮)
然后,您可以搜索(^.*$)之类的内容,以便按组分隔每一行,并在“替换”字段中使用["$1"],$1表示正则表达式匹配的值 然后只需执行全部替换,并在需要时删除列表中的最后一个逗号。