vim - 如何在 Vim 中对两行 block 进行排序?

标签 vim

我有一个包含以下内容的文件:

/** 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,
...
是否可以通过 name1 对定义进行排序, name2等在成员名称中添加后缀,并将每个注释保留在相应的定义之上?

最佳答案

我建议采取以下行动顺序。

  • 加入成对的线:
    :g/^\s*COMMON_PREFIX_/-j!
    
  • 按变量名称的后缀对连接的行进行排序:
    :sort#\*/\s*COMMON_PREFIX_#
    
  • 拆分排序后的行:
    :g#\*/\zs\ze\s*COMMON_PREFIX_#s//\r/
    

  • 您可以一次运行所有三个命令:
    :exe'g/^\s*COMMON_PREFIX_/-j!' | sort#\*/\s*COMMON_PREFIX_# | g#\*/\zs\ze\s*COMMON_PREFIX_#s//\r/
    

    关于vim - 如何在 Vim 中对两行 block 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6924816/

    相关文章:

    vim - 从源代码构建后如何更改 VIMRUNTIME 目录

    vim - 在 Vim 中使用 ALE 和 Prettier 格式化 Jinja html 模板

    shell - 更改 MacVim 默认 shell?

    Vim 状态行 : show the character itself

    vim 中的 Javascript 语法高亮显示

    vim - 使用 vimdiff 时如何找到更改 block 的底部

    vim - 更好的 VIM 语法高亮显示

    vim - 某些 vim 映射末尾的 <CR> 有何含义?

    vim - 特定文件类型的新文件的自动命令

    Vim - 导航到下一个不同的缩进