今天用vim写代码,其中有个比特域,由于他们在大小端不同的情况下定义不同。
如
struct test { #if defined(__LITTLE_ENDIAN_BITFIELD) uint8_t a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1; #elif defined(__BIG_ENDIAN_BITFIELD) uint8_t h:1, g:1, f:1, e:1, d:1, c:1, b:1, a:1; #else #error "Please fix ENDIAN_BITFIELD" #endif };
研究了一下,果然VIM里面还是有捷径的。这就是VIM的哲学,也是UNIX的哲学,有些设计者都没想到的功能都能实现。
步骤:
输入完小端的代码。
用SHIFT + v 进入行选模式。选中小端代码
按y复制,到大端下面按p粘帖。
再用SHIFT+v 选中大端下面要反序的代码,输入 : (冒号) 进入命令模式
输入命令 !tac按回车。完成行反序
原理。
tac其实是unix下的行反序命令。通过!tac把选中的行重定向到tac命令的标准输入,并把标准输出重定向回来替换掉以前的内容。
祝大家用VIM开心。