1.去VIM官网上下载vim7.3源代码 vim-7.3.tar.bz2; 卸载ubuntu自带的山寨7.2版,用新立德工具,搜索VIM,标记vim-common,默认会标记所有依赖,很方便,然后卸载。下载后随便解压到一 个地方,通常源码我都放到哦/usr/local/src里,但是,默认是没有权限的,要用chown $USER /usr/local/src付权限
2.cd vim73;cd src,因为vim所有的安装文件都在vim/src目录下
3.执行./configure命令。运行后,会提示你checking for tgetent()... configure: error: NOT FOUND!这是因为一个库没有安装,这说明需要安装 libncurses5-dev,还是用新立德安装
4.make
5.sudo make install
6.此时在终端下输入vim或者gvim都应该可以启动了
7.修改vim的配置文件,通常不建议修改/etc/vim/下的配置文件,而是在home目录下建一个.vimrc,
下面贴出我的.vimrc
"============================================================"
"by Leixu,2011-03-03
"============================================================
set nocompatible "设定 gvim 运行在增强模式下,不使用vi的键盘模式
set helplang=cn "设置帮助的语言
filetype on "设置文件类型的检测
filetype plugin on "为特定的文件类型允许插件文件的载入
filetype indent on "为特定的文件类型载入相关的缩进文件
set cursorline
set et "编辑时将所有 Tab 替换为空格
set sw=2 "自动缩进的时候, 缩进尺寸为 2 个空格
set sts=2 "设置 softtabstop 为 2. 输入 tab 后就跳了2格.
set smarttab "行首的 <Tab> 根据 'shiftwidth' 插入空白
let php_folding = 1 "折叠类、函数等
set backspace=indent,eol,start "不设定的话在插入状态无法用退格键和 Delete
set nobackup " 覆盖文件时不备份
setlocal noswapfile
set bufhidden=hide
set history=50 " 设置在命令行显示多少历史记录
set showcmd " 在状态栏显示目前所执行的指令
set incsearch " 输入搜索内容时就显示搜索结果
set number " 显示行号
set clipboard+=unnamed
"打开自动缩进和 C 语言风格的缩进模式,定制 C 语言缩进风格
set smartindent
set mouse=a " 设定在任何模式下鼠标都可用
set scrolloff=15 " 设定光标离窗口上下边界 5 行时窗口自动滚动
set ignorecase " 搜索时忽略大小写
set smartcase "但在有一个或以上大写字母时,仍保持对大小写敏感
set hid " 允许在有未保存的修改时切换缓冲区,此时的修改由切换由 vim 负责保存
set shiftwidth=2 " 设定 << 和 >> 命令移动时的宽度为 4
set showmatch " 在输入括号时光标会短暂地跳到与之相匹配的括号处,不影响输入
"设置 折行
set textwidth=100
set fo+=Mm
set wrap
winpos 1400 5
set lines=55 columns=138
syn on
set completeopt=menu,longest,preview
set confirm
"解决乱码
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")|| has("win64")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"解决consle输出乱码
language messages zh_CN.utf-8
"设置配色方案
colorscheme desert
"设置字体
set guifont=Monospace
"==========================设置快捷键
"多标签时切换标签
noremap <A-j> gT
noremap <A-k> gt
map <F12> gq
""
"设置 bufexplorer
map <c-w><c-f> :FirstExplorerWindow<cr>
map <c-w><c-b> :BottomExplorerWindow<cr>
map <c-w><c-t> :NERDTreeToggle<cr>
"去掉烦死我的错误声音
set vb t_vb=
"工作目录随文件变
autocmd BufEnter * cd %:p:h
"设置状态栏
set statusline+=%f
"不显示工具条
set guioptions-=T
""set guioptions-=m
" 打开文件时光标自动到上次退出该文件时的光标所在位置
autocmd BufReadPost * if line("'/"") && line("'/"") <= line("$") | exe "normal`/"" | endif
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"比较不同
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '/<cmd'
let cmd = '""' . $VIMRUNTIME . '/diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '/diff"'
endif
else
let cmd = $VIMRUNTIME . '/diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
"设置自动补全
setl omnifunc=nullcomplete#Complete
autocmd FileType * setl omnifunc=nullcomplete#Complete
autocmd FileType python setl omnifunc=pythoncomplete#Complete
autocmd FileType javascript setl omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html setl omnifunc=htmlcomplete#CompleteTags noci
autocmd FileType css setl omnifunc=csscomplete#CompleteCSS noci
autocmd FileType xml setl omnifunc=xmlcomplete#CompleteTags
autocmd FileType php setl omnifunc=phpcomplete#CompletePHP
autocmd FileType c setl omnifunc=ccomplete#Complete
"设定状态条
set cmdheight=1 " 设定命令行的行数为 1
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=%F%m%r/ / / / / / / / / / / %l,%c%V/ %p%%/ / / / / /
set statusline+=/ / / / [/ 总共/ %L/ 行/ ]
"设置智能大小写查找
set ignorecase smartcase
"设置标尺
set ruler "打开状态栏标尺
"设置制表符
set cindent shiftwidth=2
set softtabstop=2
set smarttab
set list "显示制表符
set listchars=tab:>-
"设置标签
function GuiTabLabel()
let label = ''
let bufnrlist = tabpagebuflist(v:lnum)
" 如果标签页里有修改过的缓冲区,加上 '+'
for bufnr in bufnrlist
if getbufvar(bufnr, "&modified")
let label = '+'
break
endif
endfor
" 如果标签页里的窗口数目多于一,加上窗口数目
let wincount = tabpagewinnr(v:lnum, '$')
if wincount > 1
let label .= wincount
endif
if label != ''
let label .= ' '
endif
" 附加缓冲区名
label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
endfunction
set guitablabel=%{GuiTabLabel()}
set guitablabel=%N/ %f
"设置php注释
"source $vimruntime/vimfiles/plugin/php-doc.vim
inoremap <C-P> <ESC>:call PhpDocSingle()<CR>i
nnoremap <C-P> :call PhpDocSingle()<CR>
vnoremap <C-P> :call PhpDocRange()<CR>
"设置putty
let g:netrw_sftp_cmd = "PSFTP"
"设置quickfix
"php语法检查
setlocal makeprg=/"d:/wamp/bin/php/php5.2.6/php.exe/"/ -l/ -n/ -d/ html_errors=off/ %
setlocal errorformat=%m/ in/ %f/ on/ line/ %l
"autocmd BufWritePost *.php,*.phps :make
map <F5> :w<CR>:noh<CR>:make<CR>
"括号自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
"":inoremap < <><ESC>i
"":inoremap > <c-r>=ClosePair('>')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "/<Right>"
else
return a:char
endif
endf
http://www.kukaka.org/home/showonews/344