我想使用vim来转换
中的以下文本块 sa.Column('id', sa.Integer, primary_key=True),
sa.Column('title', sa.String(100)),
sa.Column('isbn', sa.String(20)),
sa.Column('authors',sa.String(400),nullable=False),
sa.Column('year',sa.Integer,nullable=False)
到
id = Column(Integer, primary_key=True)
title = Column(String(100))
isbn = Column(String(20))
authors = Column(String(400),nullable=False)
year = Column(Integer,nullable=False)
怎么做?谢谢。
答案 0 :(得分:1)
根据您正在转换的行数(例如,实际上只是这几行需要这个吗?),如果使用分组超过30行,我会考虑使用替换文本方法:
:%s/\<sa[.]//g
:%s/\(Column(\)'\([a-z]\+\)',\(.\+\)/\2 =\1 \3/g
答案 1 :(得分:0)
您可能需要组合使用Blockwise Visual模式(:h blockwise-visual
)来替换字符矩形和替换模式(:h R
)以使用不同行之间的内容来改写空格。
答案 2 :(得分:0)
这是一个让你走近的宏:
:call setreg('a',"0f'ldw0pa = \<esc>df.f'df.j")
该命令会将录制的宏放入a
寄存器中,因此您可以通过键入@a
或使用5@a
在数字行上在当前行上调用它。
基本上,它执行以下步骤:
'
并删除以下字词=
=
删除到下一个.
'
并删除,直到以下.
它不会删除尾随逗号(您可以使用全局:s[ubstitute]
)并且它不会执行对齐。
非常值得习惯录制和使用宏。它们是这种可重复的特殊编辑的理想选择。您只需要小心以可重复的方式记录宏。