4

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

例如

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

应该变成:

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

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

4

2 回答 2

5

Vim 只能按行排序。这样你就可以

  • 替换\\\n|
  • 种类
  • 替换|\\\n

尝试这个:

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

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

于 2012-08-27T01:28:14.373 回答
1

可能它并不完全相关,但这个问题是谷歌的第一个热门问题vim sort python imports,所以我把它留在这里:

如果您不担心多行导入但想同时处理import xyzfrom xyz import xyz表单,那么以下命令将帮助您:

:sort /[if][^ ]*/

这意味着“忽略与模式匹配的任何内容并按接下来的内容排序”。

于 2017-08-04T20:26:42.587 回答