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开心。

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