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

los*_*its 3 regex vim

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

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

Ing*_*kat 9

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

:%s/\%>115c.*//
Run Code Online (Sandbox Code Playgroud)

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

:%s/\%10c\|\%20c\|\%30c/,/g
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为匹配本身是零宽度,即它不消耗该位置的字符.要做到这一点,你需要附加类似的东西..

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