对文件的2行块进行排序

eck*_*kes 8 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,
...
Run Code Online (Sandbox Code Playgroud)

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

ib.*_*ib. 7

我提出以下一系列行动.

  1. 加入成对的线条.

    :g/^\s*COMMON_PREFIX_/-j!
    
    Run Code Online (Sandbox Code Playgroud)
  2. 按变量名称排序连接的行就足够了.

    :sort/\*\/\s*COMMON_PREFIX_/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 拆分排序的行.

    :g/\*\/\zs\ze\s*COMMON_PREFIX_/s//\r/
    
    Run Code Online (Sandbox Code Playgroud)

您可以将所有三个命令作为一个运行:

:exe'g/^\s*COMMON_PREFIX_/-j!' | sort/\*\/\s*COMMON_PREFIX_/ | g/\*\/\zs\ze\s*COMMON_PREFIX_/s//\r/
Run Code Online (Sandbox Code Playgroud)