tips for Vim

2015年08月11日

  1. 利用vim转换文件编码set fileencoding=utf-8

  2. set list就是 Tab 的地方会以 ^I 显示,而行尾之 EOL 會显示成 $。可以让你知道 Tab 在哪里,换行是不是真的。

  3. 块插入

    首先ctrl+v进入块选择模式,然后shift+i进行插入,插入完成后按两次<ESC>退出。

  4. 选中上次使用的区域gv

  5. 缩进gg=G;使用外部程序(gq采用astyle)格式化gggqG

  6. 将光标所在行切换到窗口中间zz

  7. 翻页ctrl+f/b

  8. 删除指定行

    删除包含特定字符的行g/pattern/d 删除不包含指定字符的行v/pattern/dorg!/pattern/d

  9. 切换显示TAB键以及空格等set list!

  10. 使用宏

    qa开始录制宏,宏的名字为a;然后进行中间的操作;再按q宏录制结束。 按@a,执行一次宏,或按下6@a 就执行了6次等。

  11. 生成帮助索引helptags $VIMRUNTIME/doc

  12. 查看某快捷键是否被定义过,只需要在命令行中输入定义该快捷键的命令,而不输入被定义的命令即可。还可只输入快捷键的前面一部分,就会显示所有类似快捷键的被定义命令。

  13. 正则表达式:vim的正则表达式不是很清楚使用的是哪个版本的实现,有些语法上有点不一样,:help pattern即可查询到一些细节。比如非贪婪匹配用\{-}

  14. 使用命令:qa!可以强制退出所有文件,:xa可以保存所有文件并退出。

  15. 多行匹配,使用\_.可匹配换行,可结合非贪婪使用,如\_.\{-}

  16. 在每一行前面添加一个序号:let i=1 | g /^/ s//\=i.". "/ | let i+=1

  17. 批量操作文件

    VIM 中实现对文件的批量是通过同时打开多个文件实现的,即对 args 的操作。有以下的方式:

     vim a.txt b.txt c.txt
     :args *.txt
    

    之后,可以通过:ls:args:buffers来查看当前的 buffers 列表。 现在,要同时处理这些 buffers 中的各个文件,使用 argdo 就可以了。

     :argdo %s/teh/the/ge | update
    

    argdo 后面跟命令就可以了,它的作用就是把后面的命令应用到 arg list 中的各个文件上。 e 这个 flag 是表示忽略错误,遇到意外时不停止处理过程。 update 这个命令是当文件发化变化时保存文件,就和 write 一样。

  18. 匹配任意中文字符[^\x00-\xff], 匹配非中文字符[\x00-\xff]

  19. 阅读源代码时可以用<leader>gf打开光标所在处的文件,如被包含的头文件,意为’go to file’.使用前需要设置path变量

     set path+=/path/to/include
    
  20. 使用:verbose map <所要查找的快捷键>可以查看快捷键的具体命令及定义位置