Vim简介
Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Vim功能概要
- 根据设定可以和原始vi完全兼容
- 多缓冲编辑
- 任意个数的分割窗口(横,竖)
- 具备列表和字典功能的脚本语言
- 可以在脚本中调用Perl,Ruby,Python,Tcl,MzScheme
- 单词缩写功能
- 动态单词补全
- 多次撤销和重做
- 对应400种以上文本文件的语法高亮
- C/C++,Perl,Java,Ruby,Python等40种以上语言的自动缩排
- 利用ctags的标签中跳转
- 崩溃后文件恢复
- 光标位置和打开的缓冲状态的保存 复原(session功能)
- 可以对两个文件进行差分,同步功能的diff模式
- 远程文件编辑
- Omni补全(上下文相关的补全)
Vim命令图解:
装上插件后的Vim:
下面是插件:
#================================================
1.Ctags
(1). 功能
Ctags对浏览代码非常的方便, 可以在函数, 变量之间跳来跳去等等.
(2). 安装
首先, 下载ctags安装包Exuberant Ctags, 然后解压并安装, 命令如下:
$ tar -xzvf ctags-5.7.tar.gz
$ cd ctags-5.7
$ ./configure
# make
# make install
(3). 使用方法
去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下
运行命令: ctags -R,此时在源码目录下会生成一个 tags 文件
我现在以我的一个C的源码目录做演示
$ cd ~/C/C_Project/Graph
$ ctags -R
现在用vim打开~/C/C_Project/Graph/main.c
$vi ~/C/C_Project/Graph/main.c
再在vim中运行命令:
:set tags=~/C/C_Project/Graph/tags
该命令将tags文件加入到vim中来, 你也可以将这句话放到~/.vimrc中去,
对于经常在不同工程间编程, 可以在.vimrc中设置:
set tags=tags; // ; 不能没有
set autochdir
(4). 使用方法
把光标定位到某一函数名上, 按下 Ctar + ], vim就可以自动切换到该函数定义处!
要返回只需要按下Ctrl + t .
#================================================
#================================================
2.TagList
(1). 功能
高效地浏览源码, 其功能就像VC/Eclipse/NetBeans中的workpace,
那里面列出了当前文件中的所有宏,全局变量, 函数名等.
(2). 安装
下载taglist压缩包, 然后把解压的两个文件taglist.vim 和 taglist.txt 分别放到
$HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.
(3). 使用方法
首先请先在你的~/.vimrc文件中添加下面语句:
let Tlist_Ctags_Cmd=‘/bin/ctags‘
此时用vim打开一个C源文件试试:
$ vim ~/vim/src/main.c
进入vim后用下面的命令打开taglist窗口.
:Tlist
为了更方便地使用, 可以在.vimrc文件中加入:
map <silent> <leader>tl :TlistToggle<CR>
这样就可以用 ",tl" 命令进行taglist窗口的打开和关闭之间方便切换了. // 这里
的","是我.vimrc设置的leader, 你也可以设置成别的, 在.vimrc中修改即可, 如我
的: let mapleader=","
#================================================
#================================================
3. WinManager
(1). 功能
管理各个窗口, 或者说整合各个窗口.
(2). 安装
下载WinManager.zip压缩包, 解压后把*.vim文件放到 $HOME/.vim/plugin 目录中,
把*.txt文件放到 $HOME/.vim/doc (帮助文件)目录中.
(3). 使用方法
在.vimrc中加入如下设置:
let g:winManagerWindowLayout=‘FileExplorer|TagList|BufExplorer‘
nmap <silent> <leader>wm :WMToggle<cr>
(4). 使用方法
在终端输入vim启动vim:
$vim
在正常模式下, 敲入 ",wm" 即可看到, vim的左侧新建了两个窗口:FileExplorer和
BufExplorer, 这样我们即可在FileExplorer窗口很方便地对目录进行查看, 编辑等
操作; 在BufExplorer窗口中查看当前vim已经打开那些文件.
#================================================
#================================================
4. c.vim
(1). 功能
C/C++-IDE for Vim. 简单的说, 就是如果安装配置好后, vim就是一个
c/c++编程的一个IDE, 其功能堪比Windows里常用的VC.
(2). 安装
下载cvim.zip压缩包后, 把压缩包copy到 $HOME/.vim 目录
unzip cvim.zip // 解压命令
(3). 使用方法
在终端用vim打开一个c文件:
$vim hello.c
进入vim, 敲入 "\im" 即可发现一个main函数框架就这样快捷简单完美地写出.
#================================================
附上我的.~/vimrc文件和~/.vim文件树:
~/vimrc文件:
"syntax enable"支持自定义语法
":helptags ~/.vim/doc "生成help-tags(Vim中)
set number "设置行号
set showmode "显示模式
set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set history=1000 "记录历史的行数
set background=dark "背景使用黑色
set autoindent "vim使用自动对齐,也就是把当前行的对起格式应用到下一行
set smartindent "依据上面的对起格式,智能的选择对起方式
set tabstop=4 "设置tab键为4个空格
set shiftwidth=4 "设置当行之间交错时使用4个空格
set showmatch "设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set ruler "在编辑过程中,在右下角显示光标位置的状态行
filetype on "侦测文件类型
filetype plugin on "载入文件类型插件
filetype indent on "为特定文件类型载入相关缩进文件
let g:C_MapLeader = ‘,‘
"****** ctags start ******
"ctags -R "生成tags文件
set tags=tags; "导入tags文件到Vim
set autochdir
let mapleader=","
"****** ctags end ******
"****** Taglist start ******
map <silent> <leader>tl :TlistToggle<cr> "用 ",tl" 命令进行taglist窗口的打开和关闭之间切换
let Tlist_Ctags_Cmd = ‘/usr/bin/ctags‘
let Tlist_Exit_OnlyWindow = 1
let Tlist_Show_One_File=1
let Tlist_OnlyWindow=1
let Tlist_Use_Right_Window=0
let Tlist_Process_File_Always = 1
let Tlist_Sort_Type=‘name‘
let Tlist_Exit_OnlyWindow=1
let Tlist_Show_Menu=1
let Tlist_Max_Submenu_Items=10
let Tlist_Max_Tag_length=20
let Tlist_Use_SingleClick=0
let Tlist_Auto_Open=0
let Tlist_Close_On_Select=0
let Tlist_File_Fold_Auto_Close=1
let Tlist_GainFocus_On_ToggleOpen=0
let Tlist_Process_File_Always=1
let Tlist_WinHeight=10
let Tlist_WinWidth=18
let Tlist_Use_Horiz_Window=0
"let g:miniBufExplMapCTabSwitchBufs = 1
"****** Taglist end ******
"****** Winmanage start ******
"nmap <silent> <leader>f :FirstExplorerWindow<cr> "跳到FileExplorerWindow
"nmap <silent> <leader>b :BottomExplorerWindow<cr> "跳到TaglistWindow
nmap <silent> <leader>w :WMToggle<cr> "打开Winmanager
let g:winManagerWindowLayout=‘FileExplorer|TagList|BufExplorer‘
let g:persistentBehaviour=0
let g:winManagerWidth=25
let g:defaultExplorer=1
"****** Winmanage end ******
~/.vim文件树
:~/.vim$ tree
.
├── colors
├── compiler
├── c-support
│ ├── codesnippets
│ │ ├── calloc_double_matrix.c
│ │ ├── calloc_int_matrix.c
│ │ ├── main.c
│ │ ├── main.cc
│ │ ├── Makefile
│ │ ├── Makefile.multi-target.template
│ │ ├── print_array.cc.noindent
│ │ ├── print_double_array.c.noindent
│ │ └── print_int_array.c.noindent
│ ├── doc
│ │ ├── ChangeLog
│ │ ├── c-hotkeys.pdf
│ │ └── c-hotkeys.tex
│ ├── rc
│ │ ├── customization.ctags
│ │ ├── customization.gvimrc
│ │ ├── customization.indent.pro
│ │ └── customization.vimrc
│ ├── scripts
│ │ └── wrapper.sh
│ ├── templates
│ │ ├── c.comments.template
│ │ ├── c.cpp.template
│ │ ├── c.idioms.template
│ │ ├── cpp.comments.template
│ │ ├── cpp.cpp.template
│ │ ├── cpp.idioms.template
│ │ ├── cpp.preprocessor.template
│ │ ├── cpp.statements.template
│ │ ├── c.preprocessor.template
│ │ ├── c.statements.template
│ │ └── Templates
│ └── wordlists
│ ├── c-c++-keywords.list
│ ├── k+r.list
│ └── stl_index.list
├── doc
│ ├── bufexplorer.txt
│ ├── csupport.txt
│ ├── taglist.txt
│ ├── tags
│ └── winmanager.txt
├── ftplugin
│ ├── c.vim
│ └── make.vim
├── indent
├── keymap
├── plugin
│ ├── bufexplorer.vim
│ ├── c.vim
│ ├── taglist.vim
│ ├── winfileexplorer.vim
│ ├── winmanager.vim
│ └── wintagexplorer.vim
├── README.csupport
└── syntax