引子
昨天遇到了一个奇怪的问题,一条在Sublime里面看着十分正常的SQL语句,执行了也是正常的,导出的Insert语句也是看着没毛病的,但是在查询出来,传递到下游的时候,说多了一个乱码。WTF,然后就开始了排查, 既然SQL语句没有问题,工程里面用到了mybatis mapper,然后就在查询出来的地方打印日志,发现的确查询出来有空格,此时甚至怀疑DB的问题(多么naive)。然后我就想为啥偏偏这个column有问题?把这个column缓存其他的数字,是OK的,那么原本的数字有何问题呢?因为是集成测试环境无法执行SQL,每次都是工单执行的,这一次为了复现直接登mysql客户端,贴入SQL语句,在terminal上看的很清晰就是在这个数字后面多了个不可见字符。在sublime里面试了很多方法看不出来是啥,最后用vim打开,一目了然。
这个不可见字符就是 <202c>。
经验总结:
这个数字是我从一个富文本(Excel)地方拷贝到文本编辑器的,后面这里要注意。
准备推到线上的配置,dev一定要验证一遍,像这种问题谁能预料到?
还是VIM大法好!
正文
VIM可以同时打开多个文件,缓冲区(Buffer)列表记录了本次编辑会话中打开的所有文件,”缓冲区“意味着我们编辑的是文件在内存中的映像。
同时打开多个文件
➜ ~ vim a.txt b.txt c.txt d.txt
此时VIM会打个多个文件(缓冲区),窗口显示的是第一个文件。
展示缓冲区列表
: ls
命令会列出此次打开的缓冲区列表。
1 # "a.txt" line 1
2 %a "b.txt" line 1
3 "c.txt" line 0
4 "d.txt" line 0
%
符号表明当前窗口展示的文件, #
表示上次从这个文件轮换过来。
切换文件(缓冲区)
: bnext
会切换到下一个缓冲区。
Ctrl + ^
可以在当前文件和轮换文件(#
指示的)快速切换。
:bprev
bnext
在列表中正向、反向移动一项。
:first
:blast
分别跳到列表的第一个、最后一个文件。
:buffer N
直接根据编号跳到对应的文件。
删除缓冲区
一般使用的比较少。
:bdelete N
删除对应编号的缓冲区。