VIM:根据位置插入或删除数据

时间:2013-08-08 18:44:52

标签: regex vim

我有一个文本文件,我试图设置导入到我的数据库中。我需要删除行上某个位置后每行的所有内容。我还需要在每行上的多个固定位置插入逗号。最终目标是一个csv文件,我将导入我的数据库。

我假设有一个正则表达式或VIM命令可以按位置插入删除,但我对两者都很新,而且我的搜索没有提供好的答案。

1 个答案:

答案 0 :(得分:9)

Vim有一个特殊的正则表达式原子\%23c,在第23列匹配。您也可以在之前和之后匹配,请参阅:help /\%c。有了这个,您可以通过:substitute实现目标:删除位置115后的所有字符:

:%s/\%>115c.*//

在10,20,30位置插入逗号:

:%s/\%10c\|\%20c\|\%30c/,/g

这是因为匹配本身是零宽度,即它不消耗该位置的字符。为此,您需要附加.

之类的内容

请注意,\%c原子适用于字符(确切地说是字节计数)。要正确处理多字节和双宽字符,Tabs等,您可能最好将其基于屏幕宽度:\%v是原子。