如何在Vim中对双线块进行排序?
我有一个包含以下内容的文件:如何在Vim中对双线块进行排序?,vim,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 */
/** 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/
你能补充一些解释吗?我不知道-j!角色在做。@johnny:当然。
:global
命令的结束部分(在第二个斜杠之后)是另一个Ex命令,用于在与给定模式匹配的行上执行<代码>-j运行:使用连接命令行的-
范围上的code>修饰符-
是一行范围-1
中最短的一行,指的是当前行上方的行。谢谢,我一直使用j,没有-或!。我从来不知道我能加入上一排。对不起,我还是不明白“!”的作用@约翰尼:用代码>修改器:join
命令不会在连接的行之间插入或删除任何空格。:j
和:j之间的区别
Ex命令与J
和gJ
正常模式命令相同。太好了,感谢您花时间解释。我尝试了vim帮助,但只找到了其他含义。