VIM總能給你驚喜 之 顛倒行序

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章