有没有办法用vim内置功能(按字母顺序)对多行导入进行排序?
E.g。
import Fred
import Foo, Baz,\
Bar, Spam, Eggs
import Python
应该成为:
import Foo, Baz,\
Bar, Spam, Eggs
import Fred
import Python
我已经检查过:帮助排序。特别是模式匹配接近我想要的,但它使导入的类在排序块下分开。
答案 0 :(得分:5)
Vim只能按行排序。所以你可以
\\\n
替换为|
|
替换为\\\n
试试这个:
:%s/\\\@<=\n/|
:sort
:%s/\\\@<=|/\r
注意: \@<=
与此处\zs
相同。
答案 1 :(得分:1)
可能它并不完全相关,但这个问题是vim sort python imports
的第一次Google点击,所以我将其留在这里:
如果您不担心多行导入但希望同时处理import xyz
和from xyz import xyz
表单,则以下命令可以帮助您:
:sort /[if][^ ]*/
这意味着&#34;忽略与模式匹配的任何内容,并按照接下来的内容排序&#34;。