对文件的2行块进行排序

时间:2011-08-03 10:10:04

标签: vim

我有一个输入文件(c),其中包含以下内容:

/** doxygen comment for enum member1 */
COMMON_PREFIX_name1 = 1,
/** doxygen comment for enum member2 */
COMMON_PREFIX_name2 = 2,
/** doxygen comment for enum member3 */
COMMON_PREFIX_name3 = 3,
/** doxygen comment for enum member4 */
COMMON_PREFIX_name4 = 4,
...

我可以使用Vim按名称排序定义... nameWhatever并将注释保留在定义之上?

1 个答案:

答案 0 :(得分:6)

我提出以下一系列行动。

  1. 加入成对的行。

    :g/^\s*COMMON_PREFIX_/-j!
    
  2. 按变量名称对连接的行进行排序。

    :sort/\*\/\s*COMMON_PREFIX_/
    
  3. 将已排序的行拆分回来。

    :g/\*\/\zs\ze\s*COMMON_PREFIX_/s//\r/
    
  4. 您可以将所有三个命令作为一个命令运行:

    :exe'g/^\s*COMMON_PREFIX_/-j!' | sort/\*\/\s*COMMON_PREFIX_/ | g/\*\/\zs\ze\s*COMMON_PREFIX_/s//\r/