今天用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開心。