VIM:排序python多行导入

时间:2012-08-27 01:14:45

标签: python sorting vim

有没有办法用vim内置功能(按字母顺序)对多行导入进行排序?

E.g。

import Fred
import Foo, Baz,\
     Bar, Spam, Eggs
import Python

应该成为:

import Foo, Baz,\
     Bar, Spam, Eggs
import Fred
import Python

我已经检查过:帮助排序。特别是模式匹配接近我想要的,但它使导入的类在排序块下分开。

2 个答案:

答案 0 :(得分:5)

Vim只能按行排序。所以你可以

  • \\\n替换为|
  • 排序
  • |替换为\\\n

试试这个:

:%s/\\\@<=\n/|
:sort
:%s/\\\@<=|/\r

注意: \@<=与此处\zs相同。

答案 1 :(得分:1)

可能它并不完全相关,但这个问题是vim sort python imports的第一次Google点击,所以我将其留在这里:

如果您不担心多行导入但希望同时处理import xyzfrom xyz import xyz表单,则以下命令可以帮助您:

:sort /[if][^ ]*/

这意味着&#34;忽略与模式匹配的任何内容,并按照接下来的内容排序&#34;。