使用Vim将行序列转换为python列表?

时间:2016-05-11 15:56:51

标签: python regex vim

在包含连续行上的字符串的文件中使用Vim:

bear
fox
jackie chan

制作python字符串列表的好方法是可重复的:

['bear', 'fox', 'jackie chan']

在范围内尝试了一系列正则表达式(例如:1,3s/^/'/:1,3s/$\n/', /,然后进行讨厌的手工编辑。

5 个答案:

答案 0 :(得分:2)

ggcG                           change the whole buffer

<C-r>=string(split(@"))<CR>    insert a string representation of
                               the content of the unnamed register

<Esc>                          leave insert mode

答案 1 :(得分:1)

我选择了一个宏:

qq0i'^[$a',^[

这将该行包装成'...',

您可以选择所有行并将宏应用于:

:normal! @q

然后你可以在第一行之前添加[,在最后一行之后添加]并且

vipJ

答案 2 :(得分:1)

您可以使用多个替换和:join来完成此操作:

:%s/^\s*\zs.*/'&',/|'[,']j|s//[&]/

这将产生:

['bear', 'fox', 'jackie chan',]

我个人喜欢尾随逗号,但您可以使用其他替换或:normal命令将其删除:

%s/^\s*\zs.*/'&',/|'[,']j|s//[&]/|s/,]$/]
%s/^\s*\zs.*/'&',/|'[,']j|exe "norm! $x"|s//[&]/

如需更多帮助,请参阅:

:h :s
:h \zs
:h :j
:h :norm
:h :exe
:h :bar
:h :range
:h '[

答案 3 :(得分:0)

解决方案

:s/\(.*\)\n\(.*\)\n\(.*\)/['\1', '\2', '\3']/

答案 4 :(得分:0)

使用加入插件(https://github.com/sk1418/Join),您可以使用分隔符加入行。对于给定的示例,您可以执行以下操作:

:%s/^\|$/'/g|%J ','

然后手动将['']添加到BOL and EOL

或只是

:%J "','"

然后手动将['']添加到BOLEOL