vim是linux下的文件编辑神器,牛X的开发大神开发出来的东西不是用eclipse这样的IDE工具,而是vim 。具体增强设置如下(该处以ubunbu类系统为例)。

一、安装

1$ sudo apt-get install vim vim-gtk cscope

编辑vimrc文件:

 1$cat .vimrc
 2set tabstop=4               " 设置tab键的宽度
 3set shiftwidth=4            " 换行时行间交错使用4个空格
 4set autoindent              " 自动对齐
 5set backspace=2             " 设置退格键可用
 6set cindent shiftwidth=4    " 自动缩进4空格
 7set smartindent             " 智能自动缩进
 8set ai!                     " 设置自动缩进
 9set nu!                     " 显示行号
10set showmatch               " 显示括号配对情况
11set hlsearch                " 开启高亮显示结果
12set incsearch               " 开启实时搜索功能
13set nowrapscan              " 搜索到文件两端时不重新搜索
14"set cursorline             " 突出显示当前行
15"set hidden                 " 允许在有未保存的修改时切换缓冲区
16"set list                   " 显示Tab符,使用一高亮竖线代替
17syntax enable               " 打开语法高亮
18syntax on                   " 开启文件类型侦测
19filetype on                 "
20filetype indent on          " 针对不同的文件类型采用不同的缩进格式
21filetype plugin on          " 针对不同的文件类型加载对应的插件
22set nobackup                " 设置无备份文件
23set nocompatible            " 不使用vi兼容的模式

二、插件增强

1、Taglist 标签查看插件

1先安装ctags:sudo apt-get install exuberant-ctags
2下载:http://www.vim.org/scripts/script.php?script_id=273
3安装:解压到 ~/.vim/
4生成帮助标签:helptags ~/.vim/doc(在Vim命令中执行)
5启动:TlistToggle(在Vim命令中执行)

2、Eclim 把Eclipse的功能集成到Vim中的插件

具体可以参考:http://eclim.org/install.html (可能需要翻墙)

3、CommandT 快速打开文件的插件

1下载:http://www.vim.org/scripts/download_script.php?src_id=18167
2$ rvm install 1.8.7 // 必须使用1.8.7
3$ rvm use 1.8.7
4$ vim command-t-1.4.vba // :so %
5$ cd ~/.vim/ruby/command-t
6$ ruby extconf.rb
7$ make

4、Pathogen 自动加载插件

安装:

1$ mkdir -p ~/.vim/autoload ~/.vim/bundle
2$ curl -so ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim

编辑.bashrc文件,增加下面一行

1call pathogen#infect()

生成bundle目录下插件的帮助文档

1:Helptags

5、NERDTree 文件浏览插件

1$ cd ~/.vim/bundle
2$ git clone https://github.com/scrooloose/nerdtree.git
3:Helptags 生成帮助文档
4:help NERD_tree.txt 查看帮助文档

插件安装

 1$ mkdir ~/.vim && cd ~/.vim
 2$ git init
 3$ git add .
 4$ git commit -m 'init'
 5$ git remote add origin git@github.com:linguofeng/vim.git
 6$ git push origin master
 7$ mkdir ~/.vim/bundle
 8$ git submodule add git://github.com/tpope/vim-pathogen.git bundle/vim-pathogen
 9$ vim ~/.vimrc
10# 增加如下内容
11runtime bundle/vim-pathogen/autoload/pathogen.vim
12call pathogen#infect()

bufexplorer

1$ git submodule add https://github.com/vim-scripts/bufexplorer.zip.git bundle/bufexplorer
2$ git add .
3$ git commit -m 'install bufexporer plugin'

生成插件文档

1$ vim >> :Helptags  # 启动vim后执行Helptags命令
2$ vim ~/.vim/.gitmodules
3>>  [submodule "bundle/vim-pathogen"]
4>>      path = bundle/vim-pathogen
5>>      url = git://github.com/tpope/vim-pathogen.github
6>>      ignore = untracked      // 添加此项不提交生成的帮助文件

升级插件

1$ cd ~/.vim/bundle/xxx && git pull origin master                # 更新某个插件
2$ cd ~/.vim/ && git submodule foreach git pull origin master    # 更新所有插件

删除插件

1$ cd ~/.vim && git rm bundle/xxx

同步到github

1$ git add .
2$ git commit -m '添加插件'
3$ git push origin master

同步到另一台电脑

1$ git clone git@github.com:linguofeng/vim.git ~/.vim
2$ ln -s ~/.vim/vimrc ~/.vimrc
3$ cd ~/.vim
4$ git submodule init
5$ git submodule update

6、安装cscope与vim插件

 1$ sudo apt-get install cscope
 2$ curl -so ~/.vim/bundle/cscope/plugin/cscope_maps.vim http://cscope.sourceforge.net/cscope_maps.vim
 3$ cscope -Rbkq ~/test/vimtest/zombie_game # 此时在zombie_game文件夹中生成cscope.out文件
 4$ gvim                      # 启动gvim(下面都是vim命令)
 5    :pwd                    # 查看当前vim的工作目录
 6    :cd ~/workspace         # 改变当前vim的工作目录为workspace
 7    :cs add ~/test/vimtest/zombie_game/cscope.out ~/test/vimtest/zombie_game    # 添加cscope.out到cscope数据库中,对应路径,否则会出现找不到文件的错误。
 8    :cs show                # 查看已经连接的数据库
 9    :cs kill cscope.out     # 断开已经连接的数据库
10    :cs f g symbol          # 对应快捷键 Ctrl+]

Ctrl+] :进入这个函数

Ctrl+T :返回搜索前的位置

7、生成工程的cscope.files并生成cscope.out

1# 切换当前vim工作目录为工程目录
2$ cd /path/to/project
3# 搜索当前目录下所有.h、.c、.cpp文件并生成cscope.files文件列表
4$ find . -name '*.h' -o -name '*.c' -o -name '*.cpp' > cscope.files
5$ cscope -b
6# 根据cscope.files生成cscope.out数据库文件
7$ vim # 在当前工程里启动vim,然后执行下面的命令连接cscope.out数据库,在前面加上的路径是(.)
8    :cs add cscope.out .

三、技巧

1、替换(substitute)

 1:[range]s/source/destination/[option]
 2range: 范围
 3    1,20    从第1行到20行
 4    %       整个文件
 5    .,$     从当前行到末尾
 6    1,$     从第1行到末尾
 7s: 替换操作
 8source: 原内容
 9destination: 目标内容
10option: 参数,省略时显替换第一个匹配的词
11    g:      全局替换
12    c:      需要确认替换
13    p:      逐行替换
14    i:      不区分大小写
15    e:      不显示error

2、去掉^M字符

1:%s/^M//g
2^M是由 Ctrl-V + Ctrl-M 生成的。

3、 tab替换成空格

1:set tabstop=4 ==
2:set shiftwidth=4 ||=> 添加到.vimrc配置文件中,则可直接执行retab
3:set expandtab ==
4:retab
5tabstop     tab键的宽度
6shiftwidth  换行时使用4个空格
7expandtab   使用空格替换tab
8retab       把所有tab替换成tabstop宽度的空格

具体参考:http://vim.wikia.com/wiki/Converting_tabs_to_spaces

4、文件格式

1:set fileformat=unix
2:set fileformat=dos
3:set fileformat=mac
4unix 表示是unix下的文件格式
5dos windows下的文件格式
6mac 苹果下的文件格式

5、 窗口管理快捷键

1ctrl + w, h     -->     选择左边窗口,存在的话
2ctrl + w, j     -->     选择下边窗口
3ctrl + w, k     -->     选择上边窗口
4ctrl + w, l     -->     选择右边窗口
5ctrl + w, w     -->     逆时针选择窗口
6ctrl + w, s     -->     水平拆分窗口
7ctrl + w, v     -->     垂直拆分窗口
8ctrl + w, n     -->     新建一个窗口
9ctrl + w, q     -->     关闭窗口