PA - 杂项

高亮显示文本

1
2
3
4
5
6
7
8
9
10
11
12
enum {
black = 30, red, green, yellow, blue,
purple, darkgreen, white
};
#define kurumi(back, front, format, ...) \
do { \
fflush(stdout); \
fprintf(stdout, "\x1b[%d;%dm", back+10, front); \
fprintf(stdout, format, ## __VA_ARGS__); \
fprintf(stdout, "\x1b[0m"); \
} while (0)

调用方式: kurumi(背景色, 前景色, 格式字符串, 参数表列);

也可以进一步封装。

参考文章: C/C++控制台带颜色功能输出

vim 列编辑模式

按下 ctrl-v,上下移动可以看到选中的列,此时就可以对它们同时进行编辑

  1. 按下 I(大写 i),在选中内容之前插入
  2. 按下 A,在选中内容之后插入
  3. 按下 d,删除选中内容
  4. 其他快捷键

vim 批量修改替换 字符串

:s/XXX/YYY 将当前行的XXX修改为YYY(仅修改第一个XXX)
:s/XXX/YYY/g 将当前行的XXX修改为YYY(全部)
:3,5s/XXX/YYY/g 修改从第3行到第5行

先用 V 模式选中块区域,然后按 :(冒号)可以快速对选中内容进行替换
:’<,’>s/XXX/YYY/g

C代码格式化

按unix内核的格式格式化,还需要修改indent的配置文件,具体在哪忘了。。

附带一些格式化之后的更正和备份文件的删除

1
2
3
4
5
6
7
8
9
10
11
12
for file in `find . -type f -name "*.[ch]"`
do
indent $file
sed -i 's/2 byte_esc/2byte_esc/g' $file
sed -i 's/0 b/0b/g' $file
sed -i 's/- >/->/g' $file
sed -i 's/retrun/return/g' $file
done
find . -type f -name "*.orig" | xargs rm
find . -type f -name "*~" | xargs rm
find . -type f -name "*.swp" | xargs rm
find . -type f -name "*.swo" | xargs rm

符号位扩展 和 零扩展

参与运算的两个数位数不一致时,就需要对其中一个数进行数位扩展

符号位扩展: 若符号位是1,则高位全部扩展为1;若符号位是0,高位全部扩展为0。

至于零扩展,无论如何,高位都扩展为0。

当你想要参与运算的是一个有符号数时,就进行符号扩展;当你想要进行无符号数运算时,就进行零扩展。

简单来说,也就是计算时心里要有B数。