据我所知vim:sort方法将对每一行进行排序.我有一些包含3行的代码.我该怎么办呢?请忽略糟糕的代码,这是一个遗留的应用程序:'(
我想根据案例'AF'排序,但忽略(分组)国家和分界线
case 'AF':
country = 'Afghanistan';
break;,
case 'AL':
country = 'Albania';
break;,
case 'DZ':
country = 'Algeria';
break;,
case 'AS':
country = 'American Samoa';
break;,
case 'AD':
country = 'Andorra';
break;,
case 'AO':
country = 'Angola';
break;,
case 'AI':
country = 'Anguilla';
break;,
case 'AQ':
country = 'Antarctica';
break;,
case 'AG':
country = 'Antigua And Barbuda';
break;,
case 'AR':
country = 'Argentina';
break;,
case 'AM':
country = 'Armenia';
break;,
case 'AW':
country = 'Aruba';
break;,
case 'AU':
country = 'Australia';
break;,
case 'AT':
country = 'Austria';
break;,
case 'AZ':
country = 'Azerbaijan';
break;,
case 'BS':
country = 'Bahamas';
break;,
case 'BH':
country = 'Bahrain';
break;,
case 'BD':
country = 'Bangladesh';
break;,
case 'BB':
country = 'Barbados';
break;,
case 'BY':
country = 'Belarus';
break;
Run Code Online (Sandbox Code Playgroud)
@Halst建议的解决方案的流行语兼容版本:
将它们加入一个未出现在代码中的字符:
:'<,'>s/[:;]\zs\n/@/
Run Code Online (Sandbox Code Playgroud)再次标记线条
排序他们:
:'<,'>sort
Run Code Online (Sandbox Code Playgroud)最后一次标记线
拆分他们@:
:'<,'>s/@/\r/g
Run Code Online (Sandbox Code Playgroud)您需要手动修复上一个术语.无需indent,sort或任何其他外部程序.
如果将相关代码移动到废料缓冲区并在那里重新格式化,也可以避免标记行.
我的AdvancedSorters插件实现了@Halst和@SatoKatsura建议的算法(加入,排序,然后取消加入)作为一个简单的自定义命令:
:SortRangesByHeader /^case/
Run Code Online (Sandbox Code Playgroud)
该插件实现了各种其他排序方法,例如折叠,范围等.
| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |