在Python代码中,我经常遇到像这样的import语句:
from foo import ppp, zzz, abc
Run Code Online (Sandbox Code Playgroud)
是否有任何Vim技巧,如:sort行,以排序到这个:
from foo import abc, ppp, zzz
Run Code Online (Sandbox Code Playgroud)
Luc*_*tte 10
是的,有:
%s/import\s*\zs.*/\=join(sort(split(submatch(0), '\s*,\s*')),', ')
Run Code Online (Sandbox Code Playgroud)
关键要素是:
要回答评论,如果要在视觉选择上应用替换,它将变为:
'<,'>s/\%V.*\%V\@!/\=join(sort(split(submatch(0), '\s*,\s*')), ', ')
Run Code Online (Sandbox Code Playgroud)
新的关键要素是这次:
顺便说一句,我们也可以使用s和i_CTRL-R_= 交互,或把它放在一个映射(这里触发µ):
:xnoremap µ s<c-r>=join(sort(split(@", '\s*,\s*')), ', ')<cr><esc>
Run Code Online (Sandbox Code Playgroud)