vim tips
前言
有些不太常见的vim技巧总会忘掉,故写此文总结。常用的就不记录了,此处仅记录不那么常见但又很有用的地方
知识点
tab windows buffer
- A buffer is the in-memory text of a file.
- A window is a viewport on a buffer.
- A tab page is a collection of windows.
调试
verbose
:verbose
命令可以查看某设置具体在哪个配置文件中生效,例如:
:verbose hi
就能知道highlight配置在哪个文件被设置,
同样的:verbose nmap kk
就能知道快捷键kk在哪个文件设置,
其他的比如:verbose set syntax
之类不一一列举
设置verbose
级别可以查看详细调试信息,例如:
:set verbose=9
将打印很多调试信息,需要时可以试试
tags
为了判断是否已经生成tags用于跳转,可以用如下命令
:echo taglist("/*")
map
查看所有的map可以用:map
, 查看normal mode下所有的map可以用:nmap
, 查看所有以,
开头的map可以用:map ,
然而不足之处是查询结果不能进一步搜索,参考资料:
https://stackoverflow.com/questions/24842063/how-to-search-in-the-vim-mapping-listing
https://github.com/neovim/neovim/issues/5054
以及:h pager
但当前并未找到满意的解决办法,所以vim自带的pager功能无法搜索的问题,只能期待编辑器今后加强。
解决map不能搜索的问题,插件fzf.vim,提供:Map
等功能,非常方便!
runtime path
查看vim启动中所有查找的runtime path位置
:echo &runtimepath
但是这样会出现vim内置的more-prompt页,此页目前不支持查找之类的操作, 所以非常不方便,因此最好的方式是将页面内容保存到一个新的文件里。 可以先用vim打开一个新文件,然后执行
:put=execute('echo &runtimepath')
接下来可执行的操作就非常丰富了。
swap
查看swap文件信息: vim -r
删除swap文件的方式,原本想通过set directory
修改默认存储swap文件的位置,但是这样依然麻烦,
其实只需要先[R]ecover file
, 然后:e
出现选项,选择[D]elete swap file
即可。
启动速度
当vim启动比较慢时,可以用如下命令测试启动速度,查看那个配置产生的影响:
vim --startuptime output.txt FILE
配置技巧
配色
对于terminal,常见256的配色,256颜色表参见:https://en.wikipedia.org/wiki/File:Xterm_256color_chart.svg
显示当前vim的配色方案用:hi
,即显示highlight
操作技巧
VISUAL模式下移动
在VISUAL模式下,使用o
命令,可以切换光标到可视块的顶部/底部。
打开网页或
参见 :help netrw_gx
- 如文本中出现url(带http协议头),则在该url下按
gx
用默认浏览器打开网址 - 如果在NerdTree或netrw中,找到某个文件后按
gx
,则用默认程序打开该文件,不过比较弱,对含有空格的文件支持不好
编辑
连接两行
用J
即可连接前后两行,但是这两行之间会多出一个空格,如果不希望连接时含有空格可以用gJ
。
递增/递减光标下的数字
normal模式下Ctrl + a 递增光标下的整数,Ctrl + x 递减光标下的整数
文本中输入命令行结果
:r !pwd
文本中输入当前目录:r !tree
文本输入当前目录tree命令返回的结果
窗口互换
有时比如上下两窗口一个看头文件一个看实现,位置反了很别扭,用Ctrl-W + x