有没有办法使用 vim 内置功能(按字母顺序)对多行导入进行排序?
例如
import Fred
import Foo, Baz,\
Bar, Spam, Eggs
import Python
应该变成:
import Foo, Baz,\
Bar, Spam, Eggs
import Fred
import Python
我已经检查过 :help sort 。特别是模式匹配接近我想要的,但它使导入的类在排序块下分开。
Vim 只能按行排序。这样你就可以
\\\n
为|
|
为\\\n
尝试这个:
:%s/\\\@<=\n/|
:sort
:%s/\\\@<=|/\r
注: \@<=
与此处相同\zs
。
可能它并不完全相关,但这个问题是谷歌的第一个热门问题vim sort python imports
,所以我把它留在这里:
如果您不担心多行导入但想同时处理import xyz
和from xyz import xyz
表单,那么以下命令将帮助您:
:sort /[if][^ ]*/
这意味着“忽略与模式匹配的任何内容并按接下来的内容排序”。