VIM是一个使用非常方便、功能非常强大的文本编辑器。但有一定的学习成本。本文便是教您如何打造一个称心的VIM编辑环境,支持自动补齐、函数间快速跳转等功能。
为了方便,直接在jeffy分享的vim配置基础上进行了少量改进,在此对jeffy表示感谢!
环境安装
安装前的准备
安装前请备份自己的.vim目录和.vimrc文件。
请安装7.2以上的VIM版本。
请安装ctags、cscope、unzip,详细安装方法请google。
安装jeffy提供的方案
$ sudo apt-get install exuberant-ctags cscope
$ svn checkout http://jeffy-vim.googlecode.com/svn/trunk/ jeffy-vim-read-only
$ cd jeffy-vim-read-only
$ ./install.sh
扩展配置
主要是增加了vim-addon-manager相关配置,它是众多vim插件管理工具中非常出色的一个:
1、告诉它插件名字,它就能自动从git/hg/bzr/svn等版本管理工具或者vim插件发布网站下载最新版本并安装。
2、每个插件放在自己单独的目录,便于管理。
3、可以很方便的进行插件版本更新。
配置之前,先安装需要的插件:
mkdir ~/.vim/addons
cd ~/.vim/addons
git clone --depth 1 git://github.com/MarcWeber/vim-addon-manager.git
git clone --depth 1 git://github.com/MarcWeber/vim-addon-manager-known-repositories.git
注:~/.vim/addons就是用来保存插件的目录。
在~/.vimrc中配置正文内容之前增加如下内容:
" ADD BY CHENGUODONG: {{{1
let mapleader=","
" Config vim-addon-manager
" Auto install/active plugins, and make each plugin to a single folder
fun SetupVAM()
set runtimepath+=~/.vim/addons/vim-addon-manager
call vam#ActivateAddons([
\ 'eregex',
\ 'FuzzyFinder',
\ ])
endf
call SetupVAM()
" Enable and disable mouse use
" Use Shift+F11 to set nonumber and prepare to
" use mouse to copy it to system clipboard
noremap <S-F11> :call ToggleMouse() <CR>
function! ToggleMouse()
if &mouse == 'a'
set mouse=
set nonumber
echo "Mouse usage disabled"
else
set mouse=a
set number
echo "Mouse usage enabled"
endif
endfunction
" Key map for FuzzyFinder
" Search files very quickly
nnoremap <leader>ff :FufFile<CR>
关于vimrc配置的说明
1、" 开头的行是注释。
2、{{{1 标签是为了后面的内容可以折叠起来。
3、ActivateAddons后面列出了自动激活的插件名字,如果插件不存在会自动安装。
4、增加Shift+F11快捷键进行显示行号和鼠标操作的切换,不显示行号时,就可以用鼠标复制内容到系统剪贴板。
5、安装FuzzyFinder之后,会提示安装L9,选择Y安装即可,无须把它设置到自动激活列表中。
6、由于vim-adon-manager-known-repositories 收集的插件有些是用bzr管理的,所以最好安装上bzr:
$ sudo apt-get install bzr
常用快捷键
F9 当前目录下生成tags
F12 当前目录下生成cscope数据库
F11 全屏切换
Shift+F11 鼠标模式切换(便于去掉行号,用鼠标复制内容到剪贴板)
Ctrl+] 跳到函数实现(鼠标双击也可以)
Ctrl+T 跳回上一次位置
:ta func 跳转到func函数
Ctrl+WW 在窗口间切换
:sp filename 打开另外一个文件
F2 在左边打开类型、函数列表(ctags)
F3 在右边打开选择文件窗口(按F3退出)(NERD)
F4 在下方打开最近访问文件窗口(按q退出)(MRU)
F5 符号搜索(按两次F5退出)
,sc 跳转到当前函数被调用处(cscope)
,be 打开buffer浏览器,查看当前已打开的文件
,zz 当前窗口最大化
:!cmd VI中执行shell命令
zo 展开折叠的行
zc 折叠行
:wq 保存退出
gg 到达文章开头
G 到达文件结尾
v 进入Visual模式字选择
V 进入Visual模式行选择
Ctrl+v 进入Visual模式块选择
y 复制
p 粘贴
dd 删除行(保存到寄存器)
2dd 删除2行
x 删除字符
r<c> 当前字符替换为<c>,“<c>”可以是任意单个字符
dw 删除单词
2dw 删除2个单词
Ctrl+Z 后台
fg 前台
jobs 查看后台任务
列模式插入:
ctrl+v 进入块选择
3j 选中若干行
I 进入插入模式(Shift+i)
<some> 输入想要输入的内容
Esc 就会发现输入的内容在列模式下选中的行都生效了。
列模式删除:
ctrl+v
3j
x
模式切换
i 插入模式
R 替换模式
在函数中移动光标的快捷键:
[[ 转到上一个位于第一列的“{”
]] 转到下一个位于第一列的“{”
{ 转到上一个空行
} 转到下一个空行
gd 转到当前光标所指的局部变量的定义
* 转到当前光标所指的单词下一次出现的地方
# 转到当前光标所指的单词上一次出现的地方
括号的匹配
% 用来进行小括号、中括号和大括号的匹配。这要看当前光标指向的是什么符号了。插件使用补充说明
通用的帮助查找方法:查看~/.vim/addons/<plugin>/doc中的帮助文件。
ctags & cscope
生成符号表:
cd project_dir
ctags -R * (在当前目录生成tags,快捷键F9)
cscope -Rbkq (在当前目录生成cscope.in.out、cscope.out、cscope.po.out,快捷键F12)
注意:
1、所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息。
2、cscope功能与ctags类似,但更强大,可以搜索出函数调用关系。
vim-addon-manager
使用方法:
InstallAddons {name} ...
从网络安装指定的插件。通常情况下,应该使用ActivateAddons 命令直接激活。只有在需要了解插件包含的文件列表时才使用这个命令先安装,后激活。
ActivateAddons {name} ...
激活指定的插件。如果插件没有安装,则先从网络下载安装,然后激活。
ActivateInstalledAddons {name} ...
激活指定的插件指定的插件已经被安装,但没有激活。这个命令和ActivateAddons 命令的区别仅在于只补全已经安装的插件。
UpdateAddons [{name} ...]
更新指定的插件到最新版本。如果没有参数则更新所所有已安装插件。
UninstallNotLoadedAddons {name} ...
卸载指定的插件。eregex
支持Perl正则表达式。它用function把perl正则表达式转换为vi正则表达式再执行。
用法:
:M/ 搜索。(也可以映射到/上)
:S 替换。(大写的S)
FuzzyFinder
快速搜索目录、文件。
.vimrc中增加配置:
"Key map for FuzzyFinder
nnoremap <leader>ff :FufFile<CR>
用法:
,ff 快速搜索文件
DrawIt
vim中画图。
用法:
普通模式,输入",di"进入DrawIt模式,左下角有“DrawIt”字样。
此时,通过光标键,就可以画线(在普通模式)。
,di 开始画图
,ds 停止画图
光标键 画直线,拐弯处自动处理(hjkl不行)
PageUp/PageDown 画斜线
其它vim知识
中文帮助
查看帮助
:help
:help CTRL-H 查看普通模式下的CTRL-H帮助
:help i_CTRL-H 查看插入模式下的CTRL-H帮助
:help keycodes
:help colorscheme
键盘映射
:map <F5> i{<Esc>ea}<Esc> 在单词两边加上{},e的作用是移动到词尾。
:map 普通,可视模式及操作符等待模式
:vmap 可视模式
:nmap 普通模式
:omap 操作符等待模式
:map! 插入和命令行模式
:imap 插入模式
:cmap 命令行模式
查看当前定义的映射:
:map
替换
%s/pattern/replacement/g
%:表示作用于所有行。
s:表示替换。
g:表示行中所有匹配点。
查看vi当前配置
:set
其中,runtimepath就是插件的可能安装位置。
一般插件包含如下几个目录:plugin、autoload、doc
vim插件格式
vimball缩写为vba,使用vim-addon-manager之后,不再需要直接安装vba,可以作个简单了解。
vimball (see :help vimball)
vim DrawIt.vba.gz
:so %
:q配置文件同步到dropbox
链接配置文件到dropbox中的文件:
$ ln -s ~/Dropbox/home/linux/config/vimrc -T ~/.vimrc