将vim打造成IDE总结(一)

vim打造成IDE总结()

参考:http://blog.****.net/windeal3203/article/details/40071641

      http://blog.****.net/mifangdebaise/article/details/46952841

      http://blog.****.net/g_brightboy/article/details/14229139

      http://blog.****.net/wooin/article/details/1858917

vim似乎有一种魔力,让人越用越喜欢。本人使用VMware12以及Ubuntu16.04,因此本次总结是基于这两者的。

一、源码安装编辑器vim

Windows下和Linuxvim安装配置稍有不同,可以在

https://vim.sourceforge.io/download.php

search下载,网站不容易进,如下:

 将vim打造成IDE总结(一)

1. Windows下安装

可以选择.exe文件下载,之后像安装其他软件一样直接安装就可以了,Windows下一般使用gVim。

 将vim打造成IDE总结(一)

2. Linux下选择Unix

(1)建议使用git下载

因为vim是开源的,现在就托管在github上,它的很多插件也是在github上的,所以使用git也方便后面下载其他插件。

git clonehttps://github.com/vim/vim.git

cd vim/sr

make

 将vim打造成IDE总结(一)

(2)当然,也可以下载压缩包,

为了使得vim支持Python等,编译vim源码前在系统中做一些准备,如下:

预先安装相关依赖库的头文件,python-develpython3-develruby-devellibX11-develgtk-develgtk2-develgtk3-devel,如果缺失,源码构建过程虽不会报错,但构建完成后的vim 很可能丢失相关功能。

tar jxvf vim-7.4.tar.bz2 vim74/

cd vim74/

sudo apt-get update

sudo apt-get install python-dev

sudo apt-get install libgtk2.0-dev

sudo apt-get install libgtk-3-dev

./configure --with-features=huge --enable-rubyinterp --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config/ --enable-perlinterp --enable-gui=gtk2 --enable-cscope --prefix=/usr --enable-luainterp

./configure这几行是整体不要错了,其中,--enable-rubyinterp--enable-pythoninterp--enable-perlinterp--enable-luainterp等分别表示支持rubypythonperllua编写的插件,--enable-gui=gtk2表示生成gvim--enable-cscope支持cscope--with-python-config-dir=/usr/lib/python2.7/config/指定python路径(先自行安装Python及python的头文件python-devel),这几个特性非常重要,影响后面各类插件的使用,插件可能会是这几种语言写的,如果没有安装,相关的插件就无法运行

make VIMRUNTIMEDIR=/usr/share/vim/vim74 && make install

构建完成后 vim 打开任意文件然后在其中执行

:echo has('python')

若输出 1 则表示构建出的vim 已支持python,反之,0表示不支持。

二、插件管理

Vim的核心就是vimrc文件,每一个人的vimrc可能都不同,Linux下一般会在~目录下,为.vimrc如果没有.vimrc文件则创建该文件Windows下为_vimrc。

虽然vim本身已经有很多功能了,而且通过修改vimrc文件也可以很方便使用vim,但vim仍然只是一个编辑器,如何让它像IDE一样呐,答案就是vim插件,随着插件越来越多,vim可能会变得很臃肿,清理也不好清理,所以一个管理插件的插件就出现了,现在的管理插件有不少,我第一个接触的也一直在使用的是pathogen,Windows下和Linux下都可以使用,而且很方便,将插件目录直接放到到固定目录下即可使用,需要清理时直接删除不要的插件目录即可。

安装:先清空 .vim/ 下的所有文件(记得备份);

创建目录 ~/.vim/bundle/

下载pathogen.vimhttps://github.com/tpope/vim-pathogen)至 ~/.vim/bundle/

这里可以使用git直接安装pathogen

Ubuntu安装git的方法:

sudo apt-get install git

然后使用git安装pathogen

mkdir ~/.vim/bundle/

cd ~/.vim/bundle/

git clone https://github.com/tpope/vim-pathogen.git

所有插件均为.vim文件,所以如果插件安装后显示不成功可以到相关目录下查看是否存在相应的.vim文件。

设置:接下来在 .vimrc _vimrc增加相关配置信息:

pathogen自身也置于独立目录中,需指定其路径

runtime bundle/vim-pathogen/autoload/pathogen.vim

运行 pathogen

execute pathogen#infect()

路径要和pathogen的安装路径一致,否则无法运行。

该插件使用:比如要安装新插件 plugin_name,先在~/.vim/bundle/ 下创建目录plugin_name/,然后到vim 官网下载plugin_name 压缩包并解压至~/.vim/bundle/plugin_name/ 即可,注意不要重复包含多次plugin_name/ 目录,如,~/.vim/bundle/plugin_name/plugin_name/。要卸载插件,直接删除plugin_name/ 插件目录即可。(建议使用git直接克隆插件到相关位置,很方便

三、快捷键等常用设置

这些根据个人习惯设定,之后形成自己的vimrc。

定义快捷键的前缀,即<Leader>

let mapleader=";"

开启文件类型侦测

filetype on

根据侦测到的不同类型加载对应的插件

filetype plugin on

定义快捷键到行首和行尾

nmap lb 0

nmap le $

设置快捷键将选中文本块复制至系统剪贴板

vnoremap <Leader>y "+y

设置快捷键将系统剪贴板内容粘贴至 vim

nmap <Leader>p "+p

定义快捷键关闭当前分割窗口

nmap <Leader>q :q<CR>

定义快捷键保存当前窗口内容

nmap <Leader>w :w<CR>

定义快捷键保存所有窗口内容并退出 vim

nmap <Leader>WQ :wa<CR>:q<CR>

不做任何保存,直接退出 vim

nmap <Leader>Q :qa!<CR>

依次遍历子窗口

nnoremap nw <C-W><C-W>

跳转至右方的窗口

nnoremap <Leader>lw <C-W>l

跳转至方的窗口

nnoremap <Leader>hw <C-W>h

跳转至上方的子窗口

nnoremap <Leader>kw <C-W>k

跳转至下方的子窗口

nnoremap <Leader>jw <C-W>j

定义快捷键在结对符之间跳转,助记pair

nmap <Leader>pa %

其他。搜索、vim 命令补全等设置:

开启实时搜索功能

set incsearch

搜索时大小写不敏感

set ignorecase

关闭兼容模式

set nocompatible

" vim 自身命令行模式智能补全

set wildmenu

四、界面美化

1.主题风格

参考给了一个地址,可以自行挑选:http://vimcolorschemetest.googlecode.com/svn/html/index-c.html

素雅 solarizedhttps://github.com/altercation/vim-colors-solarized 

多彩 molokaihttps://github.com/tomasr/molokai 

复古 phdhttp://www.vim.org/scripts/script.php?script_id=3139 

我用的是多彩,大家自行选择。

pathogen 无法安装主题插件,请将主题插件(仅 *.vim文件而非插件目录,即,solarized.vimmolokai.vimphd.vim)拷贝至~/.vim/colors/,然后在.vimrc中设定选用其作为主题:

配色方案

set background=dark

colorscheme solarized

"colorscheme molokai

"colorscheme phd

2.营造专注气氛

禁止光标闪烁

set gcr=a:block-blinkon0

禁止显示滚动条

set guioptions-=l

set guioptions-=L

set guioptions-=r

set guioptions-=R

禁止显示菜单和工具条

set guioptions-=m

set guioptions-=T

后面的全屏我没设置,本人不喜欢全屏,有兴趣的可以去参考网址查看方法。

3.添加辅助信息

总是显示状态栏

set laststatus=2

显示光标当前位置

set ruler

开启行号显示

set number

高亮显示当前行/

set cursorline

set cursorcolumn

高亮显示搜索结果

set hlsearch

4.其他美化

需要借助插件 Powerlinehttps://github.com/Lokaltog/vim-powerline )美化状态栏,在.vimrc 中设定状态栏主题风格:

git clone https://github.com/Lokaltog/vim-powerline

设置状态栏主题风格

let g:Powerline_colorscheme='solarized256'

gitpathogen后,只需要

cd ~/.vim/bundle/

还可以设置字体等等,这里不再多说,有兴趣的可以在网上查找。

五、代码分析

1.语法高亮

开启语法高亮功能

syntax enable

允许用指定语法高亮配色方案替换默认方案

syntax on

2.代码缩进

自适应不同语言的智能缩进

filetype indent on

将制表符扩展为空格

set expandtab

设置编辑时制表符占用空格数

set tabstop=4

设置格式化时制表符占用空格数

set shiftwidth=4

 vim把连续数量的空格视为一个制表符

set softtabstop=4

可视化的方式能将相同缩进的代码关联起来

安装Indent Guideshttps://github.com/nathanaelkane/vim-indent-guides)。

cd ~/.vim/bundle/

git clone https://github.com/nathanaelkane/vim-indent-guides.git

sudo vim ~/.vimrc

增加如下配置信息:

 vim自启动

let g:indent_guides_enable_on_vim_startup=1

从第二层开始可视化显示缩进

let g:indent_guides_start_level=2

色块宽度

let g:indent_guides_guide_size=1

快捷键 i/关缩进可视化

:nmap <silent> <Leader>i <Plug>IndentGuidesToggle

3.代码折叠

vim 自身支持多种折叠:手动建立折叠(manual)、基于缩进进行折叠(indent)、基于语法进行折叠(syntax)、未更改文本构成折叠(diff)等等,其中,indentsyntax比较适合编程,按需选用。增加如下配置信息:

基于缩进或语法进行代码折叠

"set foldmethod=indent

set foldmethod=syntax

启动 vim时关闭折叠代码

set nofoldenable

操作:za,打开或关闭当前折叠;zM,关闭所有折叠;zR,打开所有折叠。

4.接口与实现快速切换

假如在接口文件中,vim 自动帮我找到对应的实现文件,当键入快捷键,可以在当前窗口中打开对应实现文件,也可以在当前窗口中分裂一个子窗口显示对应实现文件。

a.vimhttps://github.com/vim-scripts/a.vim )来了。

cd ~/.vim/bundle/

git clone  https://github.com/vim-scripts/a.vim.git

sudo vim ~/.vimrc

安装后增加配置信息:

" *.cpp  *.h间切换

nmap <Leader>ch :A<CR>

子窗口中显示 *.cpp *.h

nmap <Leader>sch :AS<CR>

这样,键入 ;ch 就能在实现文件和接口文件间切换,键入;sch 子窗口中将显示实现文件/接口文件。

a.vim 实现原理很简单,基于文件名进行关联,比如,a.vim能识别 my_class.h my_class.cpp,而无法识别my_class.h your_class.cpp。所以,你在命名文件时得注意下。

5.Tag List

Ubuntu下:

sudo apt-get install ctags

下载TagListbundle目录下即可

Windows下:

Windows下较为麻烦,需要先安装Windows版本的ctags,然后将其路径添加到系统中,然后将TagList放到bundle目录下才可以运行TagList,否则会一直显示找不到ctags的路径。

WindowsTagList下载地址:

http://www.vim.org/scripts/download_script.php?src_id=7701

Ctags下载地址:

http://vdisk.weibo.com/s/vyxHhy62jN0S

下载完后解压找到ctags.exe,将其路径添加到Windows系统中,然后将TagList的文件放到bundle下再打开gVim就发现已经可以使用TagList了。

 将vim打造成IDE总结(一)

 将vim打造成IDE总结(一)

配置信息如下:

"不同时显示多个文件的tag,只显示当前文件的

let Tlist_Show_One_File = 1

"如果taglist窗口是最后一个窗口,则退出vim

let Tlist_Exit_OnlyWindow = 1

"设置Tlist的位置

let Tlist_Use_Right_Window = 1

6.NERDTree

git clone https://github.com/scrooloose/nerdtree.git

使用 NERDTree插件查看工程文件。设置快捷键,速记:file list

nmap <Leader>fl :NERDTreeToggle<CR>

设置NERDTree子窗口宽度

let NERDTreeWinSize=32

设置NERDTree子窗口位置

let NERDTreeWinPos="right"

显示隐藏文件

let NERDTreeShowHidden=1

" NERDTree 子窗口中不显示冗余帮助信息

let NERDTreeMinimalUI=1

删除文件时自动删除文件对应 buffer

let NERDTreeAutoDeleteBuffer=1

六、代码开发

1.快速开关注释

NERD Commenterhttps://github.com/scrooloose/nerdcommenter ),NERD Commenter 根据编辑文档的扩展名自适应采用何种注释风格,如,文档名 x.cpp 则采用//注释风格,而x.c 则是// 注释风格;另外,如果选中的代码并非整行,那么该插件将用// 只注释选中部分。

git clone https://github.com/scrooloose/nerdcommenter.git

常用操作:(注释时先按数字确认从现在的位置注释到哪个位置,然后按分号,最后按快捷键,例如:19cc就是从当前位置注释19行,取消注释同理。

cc,注释当前选中文本,如果选中的是整行则在每行首添加 //,如果选中一行的部分内容则在选中部分前后添加分别//

cu,取消选中文本块的注释。

2.模板补全

 UltiSnipshttps://github.com/SirVer/ultisnips 

git clone https://github.com/SirVer/ultisnips.git

在进行模板补全时,你是先键入模板名(如,if),接着键入补全快捷键(默认),然后UltiSnips 根据你键入的模板名在代码模板文件中搜索匹配的模板名-模板,找到对应模板后,将模板在光标当前位置展开。

默认情况下,UltiSnips 模板补全快捷键是tab ,与后面介绍的 supertab 快捷键有冲突,所有须在 .vimrc 中重新设定:(无法补全的话可以下载代码块合集 honza/vim-snippets)

vim ~/.vimrc

" UltiSnips  tab键与supertab冲突,重新设定

let g:UltiSnipsExpandTrigger="<leader><tab>"

let g:UltiSnipsJumpForwardTrigger="<leader><tab>"

let g:UltiSnipsJumpBackwardTrigger="<leader><s-tab>"

3.快速输入结对符auto-pairs

git clone https://github.com/jiangmiao/auto-pairs.git

4.智能补全supertab

git clone https://github.com/ervandew/supertab.git

5.代码查错syntastic

git clone https://github.com/vim-syntastic/syntastic.git

七、最后

编辑功能暂时告一段落,这些功能对于我目前来说已经足够