vim tips

  • 编辑/tmp/why is vim so greate.mm文件

:e /tmp/why\ is\ vim\ so\ greate.mm
  • 另存为/tmp/what_is_it.txt

:saveas /tmp/what_is_it.txt
  • 打开语法高亮显示

:syntax on
  • 语法高亮为.xml文件语法 - 对于文件格式有很好的

:set ft=xml
  • 设置自动缩进

:set autoindent
:set cindent

按下> G会缩进当前行到文档末尾,在编程中非常有用

  • 设置自动缩进2个空格

:set shiftwidth=2
  • 设置语法高亮

vim会根据文件扩展名来判断文件类型,并启用对应的语法高亮。不过,有时候文件扩展名可能和内容类型不同,例如,在脚本公共部分使用了命名common.inc,则vim不会自动使用shell的语法高亮。临时解决方法是执行:

:set syn=sh

或者

:set filetype=sh

参考How to highlight Bash scripts in Vim?

  • 搜索光标当前所在单词(相当于 /字符串 ,但是是完整匹配) 使用快捷键 #

paste模式切换

在复制粘贴代码到vim时,需要关闭掉自动indent,否则会导致代码缩进混乱。

  • 开启paste模式:

:set paste

或者直接输入命令

:paste
  • 关闭paste模式:

:set nopaste
  • 如果经常切换paste模式,可以在配置.vimrc中设置快捷键:

set pastetoggle=<F3>

快速跳跃

快速跳跃到下一个指定字符:f字符,例如f;就会跳到下一个;f+就会跳到下一个+

大小写切换

  • U 将可视模式下选择的字母全部改成大些字母

  • u 将可视模式下选择的字母全部改成小写字母

  • gUU 当前行字母改成大写

  • 3gUU 当当前行开始到下面3航字母改成大写

  • guu 当前行字母改成小写

  • gUw 光标下的单词改成大写

  • guw 光标下的单词改成小写

.是一个微型宏

  • 重复上一次指令,按一下.

重复不仅可以针对上一次指令,例如dd删除行,然后再按一下.就会再删除一行。

而且这个指令也包含了插入模式指令i:先按一下i进入插入模式,然后输入内容,再按下esc键退出插入模式。此时所有输入内容都会被记录,所以,此时按下.会把刚才输入的所有内容重复输入。这对需要重复输入很多行内容非常有用。

如果在每行行尾添加;,通常会用j$a;然后再esc,但是如果使用.,则可以j$.来减少3次按键(a;然后再esc)。

Ctags 的使用

  • 首先在你程序的顶级目录下运行:ctags -R,这样会在当前目录下生成tags文件

  • 使用快捷键看代码:

<Ctrl + ]> 调转到变量或函数的定义处

<Ctrl + T> 返回到调用处
  • 修改程序后, 比如增加了函数定义, 删除了变量定义, tags文件不能自动rebuild, 你必须手动再运行一下命令:ctgs -R,还好你不用退出vi

参考

Last updated