vim 的查找替换功能相当强悍,这是在网上找到的一个功能:把所有的10进制数字,转化成16进制数字。
首先确定在 vim 的命令模式下,然后敲入以下命令:
:%s//d/+//=printf(“%X”, submatch(0))/g
回车,现在文档中的全部数字都已经转化成16进制的数字:
这条命令的原理是,把一串数字,用 printf() 函数的输出替换掉,printf() 函数输出的正是这串数字的16进制形式。
命令分解如下:
%s | 在整个文件中替换 (:help :s ) | |
/d/+ | 匹配一个或多个数字 (:help //d :help //+ ) | |
/= | 使用表达式的结果进行替换 (:help //w ) | |
printf | 按指定格式输出 (:help printf() ) | |
submatch() | 返回:s命令中的指定匹配字符串 (:help submatch() ) | |
g | 替换行内所有出现的匹配 (:help :s_flags) |
看来,vim 替换命令的巧妙使用可以完成很多意想不到的功能!