(注意:我不认为以下是特别明智的。)
在大多数情况下,如果您只是键入原始代码(大多数编辑器都会帮助您对齐dict和列表项),您应该得到这样的结果:rates = {3: [((17500, 199999), Decimal('23425.00'), Decimal('7234.245'))],
4: [((0, 3510), Decimal('4563.00'), Decimal('5234.00')),
((3510, 17500), Decimal('34578.00'), Decimal('464.50')),
((17500, 99999), Decimal('18268.00'), Decimal('5734.66'))],
15: [((17500, 99999), Decimal('83564.00'), Decimal('3475.60'))]}
(我将一些值变长,一些值变短,以增加一点古怪。)
使用用于Vim的Tabular插件,在上面的代码上按顺序执行以下命令(您可能希望可视化地阻止它),将以与您最初的问题相匹配的方式格式化上述代码:
^{pr2}$
操作包括:对齐第一个[s和(s
对齐第一个(s,这将修复与第一个操作的不对齐。在
右对齐(17500,上的类似于,的值。在
右对齐, 99999)上的类似于,的值。在
将'4563.00'类值对齐.。在
您可以制作一个在普通和可视模式下使用的映射:noremap ff :Tab /^[^[(]*\zs[[(]/l0
\:Tab /^[^(]*\zs(/l0
\:Tab /(\zs\d\+\s*,/l0r1
\:Tab /,\s*\zs\d\+)/l1r0
\:Tab /['"]\d*\ze\.\d*['"]/l0r0
最终结果:rates = {3: [((17500, 199999), Decimal('23425.00'), Decimal('7234.245'))],
4: [(( 0, 3510), Decimal( '4563.00'), Decimal('5234.00')),
(( 3510, 17500), Decimal('34578.00'), Decimal( '464.50')),
((17500, 99999), Decimal('18268.00'), Decimal('5734.66'))],
15: [((17500, 99999), Decimal('83564.00'), Decimal('3475.60'))]}
显然,这些操作的有效性取决于代码的结构和原始格式,但希望这能启发您。在