Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VIM之操纵缓冲区列表 #27

Open
vonzhou opened this issue Jul 25, 2020 · 0 comments
Open

VIM之操纵缓冲区列表 #27

vonzhou opened this issue Jul 25, 2020 · 0 comments

Comments

@vonzhou
Copy link
Owner

vonzhou commented Jul 25, 2020

引子

昨天遇到了一个奇怪的问题,一条在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 删除对应编号的缓冲区。

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant