下面是从网上整理的vim的配置,现在用的也比较顺手了,真是好喜欢vim这款编辑器。
下面是简单的适合初学者的配置文件:
set nu
set encoding=utf-8
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1 " 如果你要打开的文件编码不在此列,那就添加进去
set termencoding=utf-8
set guifont=Courier\ New\ 12,Arial\ 10 "字体大小
set guioptions-=T "去除工具栏
set guioptions-=m "去除菜单栏
set cursorline "高亮显示当前行
set autoindent "设置自动缩进
set smartindent "智能缩进?
set nocompatible
set magic
set ru "标尺信息
set ai
set sw=4
set ts=4
set dy=lastline "显示最多行,不用@@
"以上是缩进相关
set backspace=indent,eol,start
colo desert256
sy on
"set go= 无菜单、工具栏
set nobackup
set hlsearch
set showmatch
"tab mappings
map <M-t> :tabnew<CR>
map <M-w> :tabclose<CR>
map <M-n> :Ve<CR>
" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
以下是比较复杂的配置文件:
let mapleader = ";" " 比较习惯用;作为命令前缀,右手小拇指直接能按到
nmap <space> : " 把空格键映射成:
" 快捷打开编辑vimrc文件的键盘绑定
map <silent> <leader>ee :e $HOME/.vimrc<cr>
autocmd! bufwritepost *.vimrc source $HOME/.vimrc
inoremap <leader>n <esc>
" 判断操作系统
if (has("win32") || has("win64") || has("win32unix"))
let g:isWin = 1
else
let g:isWin = 0
endif
" 判断是终端还是gvim
if has("gui_running")
let g:isGUI = 1
else
let g:isGUI = 0
endif
"======================================================
" 基本设置
" {{{
set guifont=Courier:16,Courier\ New\ 12,Arial\ 10 "字体大小
set nocompatible " 关闭兼容模式
set display=lastline
syntax enable " 语法高亮
filetype plugin on " 文件类型插件
filetype indent on
set shortmess=atI " 去掉欢迎界面
set autoindent
autocmd BufEnter * :syntax sync fromstart
set nu " 显示行号
set showcmd " 显示命令
set lz " 当运行宏时,在命令执行完成之前,不重绘屏幕
set hid " 可以在没有保存的情况下切换buffer
set backspace=eol,start,indent
set whichwrap+=<,>,h,l " 退格键和方向键可以换行
set incsearch " 增量式搜索
set nohlsearch
"set hlsearch " 高亮搜索
set ignorecase " 搜索时忽略大小写
set magic " 额,自己:h magic吧,一行很难解释
set showmatch " 显示匹配的括号
set nobackup " 关闭备份
set nowb
set noswapfile " 不使用swp文件,注意,错误退出后无法恢复
set lbr " 在breakat字符处而不是最后一个字符处断行
set ai " 自动缩进
set si " 智能缩进
set cindent " C/C++风格缩进
set wildmenu
set nofen
set fdl=10
" tab转化为4个字符
set expandtab
set smarttab
set shiftwidth=4
set tabstop=4
" 不使用beep或flash
set vb t_vb=
set background=dark
set t_Co=256
colorscheme desert256
set history=400 " vim记住的历史操作的数量,默认的是20
set autoread " 当文件在外部被修改时,自动重新读取
set mouse=n " 在所有模式下都允许使用鼠标,还可以是n,v,i,c等
"}}}
"======================================================
"在gvim中高亮当前行
if (g:isGUI)
set cursorline
colorscheme desert256
hi cursorline guibg=#333333
hi CursorColumn guibg=#333333
set guifont=Consolas\ 16,Arial\ 16
set gfn=Ubuntu\ Mono\ 16
" 不显示toolbar
set guioptions-=T
" 不显示菜单栏
set guioptions-=m
" 关闭左右滚动条
set guioptions-=L
set guioptions-=r
endif
"======================================================
" 设置字符集编码,默认使用utf8
if (g:isWin)
let &termencoding=&encoding " 通常win下的encoding为cp936
set fileencodings=utf8,cp936,ucs-bom,latin1
else
set encoding=utf8
set fileencodings=utf8,gb2312,gb18030,ucs-bom,latin1
endif
"======================================================
" 状态栏
set laststatus=2 " 总是显示状态栏
highlight StatusLine cterm=bold ctermfg=yellow ctermbg=blue
" 获取当前路径,将$HOME转化为~
function! CurDir()
let curdir = substitute(getcwd(), $HOME, "~", "g")
return curdir
endfunction
set statusline=[%n]\ %f%m%r%h\ \|\ \ pwd:\ %{CurDir()}\ \ \|%=\|\ %l,%c\ %p%%\ \|\ ascii=%b,hex=%b%{((&fenc==\"\")?\"\":\"\ \|\ \".&fenc)}\ \|\ %{$USER}\ @\ %{hostname()}\
"======================================================
" 第80列往后加下划线
"au BufWinEnter * let w:m2=matchadd('Underlined', '\%>' . 80 . 'v.\+', -1)
" 根据给定方向搜索当前光标下的单词,结合下面两个绑定使用
function! VisualSearch(direction) range
let l:saved_reg = @"
execute "normal! vgvy"
let l:pattern = escape(@", '\\/.*$^~[]')
let l:pattern = substitute(l:pattern, "\n$", "", "")
if a:direction == 'b'
execute "normal ?" . l:pattern . "<cr>"
else
execute "normal /" . l:pattern . "<cr>"
endif
let @/ = l:pattern
let @" = l:saved_reg
endfunction
" 用 */# 向 前/后 搜索光标下的单词
vnoremap <silent> * :call VisualSearch('f')<CR>
vnoremap <silent> # :call VisualSearch('b')<CR>
"======================================================
" 自定义按键
" {{{
" 在文件名上按gf时,在新的tab中打开
"map gf :tabnew <cfile><cr>
" 用c-j,k在buffer之间切换
nn <C-J> :bn<cr>
nn <C-K> :bp<cr>
" Bash(Emacs)风格键盘绑定
imap <C-e> <END>
imap <C-a> <HOME>
"从系统剪切板中复制,剪切,粘贴
map <F2> "+y
map <F3> "+x
map <F4> "+p
" 快捷输入
" 自动完成括号和引号
inoremap <leader>1 ()<esc>:let leavechar=")"<cr>i
inoremap <leader>2 []<esc>:let leavechar="]"<cr>i
inoremap <leader>3 {}<esc>:let leavechar="}"<cr>i
inoremap <leader>4 {<esc>o}<esc>:let leavechar="}"<cr>O
inoremap <leader>q ''<esc>:let leavechar="'"<cr>i
inoremap <leader>w ""<esc>:let leavechar='"'<cr>i
" c-j自动补全,当补全菜单打开时,c-j,k上下选择
imap <expr> <c-j> pumvisible()?"\<C-N>":"\<C-X><C-O>"
imap <expr> <c-k> pumvisible()?"\<C-P>":"\<esc>"
" f:文件名补全,l:行补全,d:字典补全,]:tag补全
imap <C-]> <C-X><C-]>
imap <C-F> <C-X><C-F>
imap <C-D> <C-X><C-D>
imap <C-L> <C-X><C-L>
"}}}
"======================================================
"======================================================
" 插件设置
" {{{
" 插件窗口的宽度,如TagList,NERD_tree等,自己设置
let s:PlugWinSize = 25
" autocomplpop.vim
let g:acp_behaviorKeywordLength = 4
"======================================================
" ConqueTerm.vim
let g:ConqueTerm_FastMode = 1 " enable fast mode
let g:ConqueTerm_Color = 0 " diable terminal colors
let g:ConqueTerm_CloseOnEnd = 1 " close buffer when program exits
"======================================================
" tagbar.vim
" <leader>tb 打开Tagbar窗口
nmap <silent> <leader>tb :TagbarToggle<CR>
let g:tagbar_left = 0
let g:tagbar_width = 25
"======================================================
" taglist.vim
" http://www.vim.org/scripts/script.php?script_id=273
" <leader>t 打开TagList窗口,窗口在右边
nmap <silent> <leader>t :TlistToggle<cr>
"let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 0
let Tlist_Exit_OnlyWindow = 1
let Tlist_Use_Right_Window = 1
let Tlist_File_Fold_Auto_Close = 1
let Tlist_GainFocus_On_ToggleOpen = 0
let Tlist_WinWidth = s:PlugWinSize
let Tlist_Auto_Open = 0
let Tlist_Display_Prototype = 0
"let Tlist_Close_On_Select = 1
"======================================================
" OmniCppComplete.vim
" http://www.vim.org/scripts/script.php?script_id=1520
set completeopt=menu
let OmniCpp_NamespaceSearch = 1
let Omnicpp_GlobalScopeSearch = 1
let OmniCpp_ShowPrototypeInAbbr = 1
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] " 逗号分割的字符串
let OmniCpp_MayCompleteScope = 1
let OmniCpp_SelectFirstItem = 2
"======================================================
" NERD_commenter.vim
" http://www.vim.org/scripts/script.php?script_id=1218
" Toggle单行注释/“性感”注释/注释到行尾/取消注释
map <leader>cc ,c<space>
map <leader>cs ,cs
map <leader>c$ ,c$
map <leader>cu ,cu
" 文件类型
au BufNewFile,BufRead *.t2t set ft=txt2tags
"au FileType python set ft=python.django
"au FileType html set ft=htmldjango.html
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType java set omnifunc=javacomplete#Complete
"======================================================
附件:
desert256配色方案