Vim 可以使用“sort”命令对行进行排序。我想使用 vim 对源代码中的函数进行排序。
例如:
前
def a():
pass
def c():
pass
def b():
pass
after:
def a():
pass
def b():
pass
def c():
pass
我可以这样做吗?
对于这样的事情:
def a():
stmt1
stmt2
def b():
stmt3
Or C:
void a()
{
stmt1;
stmt2;
}
void b()
{
stmt3;
}
您需要足够的语义知识来确定 stmt1 和 stmt2 之间的空白仍然是a
.
对于 python,这意味着您需要提前阅读以找到第一行既不是空白也不是缩进的行。您还需要考虑嵌套缩进(当函数是类或模块的一部分并且def
已经缩进)。
对于 C,您需要提前阅读直到匹配的结束大括号 - 这意味着您需要考虑嵌套大括号。
有一个关于 C++ 的类似主题尚未得到解答:在 C++ 代码中自动按字母顺序对函数进行排序
我相信这在一般情况下并不简单,你最好使用yacc
或其他一些语义解析器。您还可以手动添加开始和结束标记,并执行类似于 kev 建议的操作。
MaRkNeXt
def a():
stmt1
stmt2
MaRkNeXt
def b():
stmt3
MaRkNeXt
然后是这样的:
:%s/$/$/
:g/^MaRkNeXt/,/MaRkNeXt/-1join!
:%sort
:%s/\$/\r/g
:g/MaRkNeXt/d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)