在Python代码中,我经常遇到这样的import语句:
from foo import ppp, zzz, abc
有没有什么Vim技巧,比如:sort,可以排序成这样:
:sort
from foo import abc, ppp, zzz
9udxz4iz1#
是的,有:
%s/import\s*\zs.*/\=join(sort(split(submatch(0), '\s*,\s*')),', ')
关键要素包括:
:h :substitute
:h /\zs
:h s/\=
:h submatch()
:h sort()
:h join()
:h split()
要回答注解,如果要将替换应用于可视选择,它将变为:
'<,'>s/\%V.*\%V\@!/\=join(sort(split(submatch(0), '\s*,\s*')), ', ')
这次新增的关键要素是:
:h /\%V
:h /\@!
\%V
顺便说一句,我们也可以交互地使用s和i_CTRL-R_=,或者把它放在一个Map中(这里是在µ上触发的):
s
i_CTRL-R_=
µ
:xnoremap µ s<c-r>=join(sort(split(@", '\s*,\s*')), ', ')<cr><esc>
taor4pac2#
或者,您可以执行下列步骤:1.将要排序的单词移到下一行:
1.在单词列表的末尾添加逗号:
from foo import ppp, zzz, abc,
1.选择单词列表,例如与Shift-v.现在点击:然后输入!xargs -n1 | sort | xargs。它应该如下所示:
!xargs -n1 | sort | xargs
:'<,'>!xargs -n1 | sort | xargs
按Enter键。
from foo import abc, ppp, zzz,
1.现在删除结尾逗号并将单词列表合并回原始行(例如,使用Shift-j)。
有一些Vim插件,可能对您有用:
1cosmwyk3#
我来到这里寻找一个快速的方法来排序逗号分隔的列表,一般来说,e.g.
relationships = { 'project', 'freelancer', 'task', 'managers', 'team' }
我的习惯是用换行符搜索/替换空格,并调用shell排序,但这是一个痛苦的过程。最后我找到了Chris Toomey的sort-motion插件,它就是一张入场券:https://github.com/christoomey/vim-sort-motion.强烈推荐。
sort-motion
1szpjjfi4#
为什么不试试vim-isort?我使用和vim-yapf-format来美化代码:)https://github.com/pignacio/vim-yapf-format
icnyk63a5#
在可视模式下选择逗号分隔的文本:,然后运行以下命令:
'<,'>!tr ',' '\n' | sort -f | paste -sd ','
🎩- 提示此注解
5条答案
按热度按时间9udxz4iz1#
是的,有:
关键要素包括:
:h :substitute
:h /\zs
个:h s/\=
:h submatch()
:h sort()
:h join()
:h split()
要回答注解,如果要将替换应用于可视选择,它将变为:
这次新增的关键要素是:
:h /\%V
,表示下一个匹配的字符应属于可视选择:h /\@!
,我使用它来表示(与\%V
结合)下一个字符不属于可视选择。下一个字符不保留在匹配表达式中。顺便说一句,我们也可以交互地使用
s
和i_CTRL-R_=
,或者把它放在一个Map中(这里是在µ
上触发的):taor4pac2#
或者,您可以执行下列步骤:
1.将要排序的单词移到下一行:
1.在单词列表的末尾添加逗号:
1.选择单词列表,例如与Shift-v.现在点击:然后输入
!xargs -n1 | sort | xargs
。它应该如下所示:按Enter键。
1.现在删除结尾逗号并将单词列表合并回原始行(例如,使用Shift-j)。
有一些Vim插件,可能对您有用:
1cosmwyk3#
我来到这里寻找一个快速的方法来排序逗号分隔的列表,一般来说,e.g.
我的习惯是用换行符搜索/替换空格,并调用shell排序,但这是一个痛苦的过程。
最后我找到了Chris Toomey的
sort-motion
插件,它就是一张入场券:https://github.com/christoomey/vim-sort-motion.强烈推荐。1szpjjfi4#
为什么不试试vim-isort?
我使用和vim-yapf-format来美化代码:)https://github.com/pignacio/vim-yapf-format
icnyk63a5#
在可视模式下选择逗号分隔的文本:,然后运行以下命令:
🎩- 提示此注解