在vim里转换HEX数据的显示
在做嵌入式设备开发和调试工作中,可能常常遇到以下场景,需要把:
0000:60 00 00 00 00 00 00 00 00 00 00 42 00 00 18 00 `....... ...B....:0015
0016:01 80 80 00 03 14 20 24 20 11 08 17 08 12 34 56 ...... $ .....4V:0031
0032:78 08 87 65 43 21 36 35 30 34 31 37 31 38 00 59 x..eC!65 041718.Y:0047
0048:30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 00000000 00010000:0063
0064:30 30 30 30 49 43 41 52 44 30 30 30 30 30 30 30 0000ICAR D0000000:0079
0080:34 30 30 30 30 30 30 31 32 31 36 30 30 30 30 30 40000001 21600000:0095
0096:30 34 30 30 30 30 32 30 34 30 35 31 31 31 31 31 04000020 40511111:0111
0112:31 31 31 111 :0127
这样的文本,转换为单行,头尾部分不要,中间重复的空格也不要。如下:
60 00 00 00 00 00 00 00 00 00 00 42 00 00 18 00 01 80 80 00 03 14 20 24 20 11 08 17 08 12 34 56 78 08 87 65 43 21 36 35 30 34 31 37 31 38 00 59 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 49 43 41 52 44 30 30 30 30 30 30 30 34 30 30 30 30 30 30 31 32 31 36 30 30 30 30 30 30 34 30 30 30 30 32 30 34 30 35 31 31 31 31 31 31 31 31
这个可以用vim的替换来实现,命令是::%s/\d*:\(\(\x\|\s\)\{24}\) \(\(\x\|\s\)\{24}\).*\n/\1\3/g
我们还可以为它在.vimrc中定义一个快捷键映射:map <C-H> :%s/\d*:\(\(\x\\|\s\)\{24}\) \(\(\x\\|\s\)\{24}\).*\n/\1\3/g<CR>
这样以后按一下CTRL+H键就搞定了。