技术分析:VIM,PowerShell 和签名代码

摘要:在 UNIX 和 Linux 世界中,vi 和 EMACS 长期占据了处理大量代码或其他文本的最佳编辑器的位置。后来,一个称为 VIM(Vi, IMproved 的简称)的 vi 改进克隆版出现了。VIM 具有语法高亮、一个类似 vi 的命令行界面,以及更多强大的编辑大型文本工程的功能。它很快成为 Windows 世界之外最好用的文本编辑器之一。本文关注 VIM 和 Windows PowerShell 的配合使用,并讨论如何进行代码签名。

下载 PDF 文档:《technical-analysis-vim-powershell-and-signed-code.pdf》。

在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键就搞定了。