2023年8月3日发(作者:)

" 在处理未保存或只读文件的时候,弹出确认 set confirm " 带有如下符号的单词不要被换行分割

set iskeyword+=_,$,@,%,#,-

"Tlist 和 wm的设置

"命令模式输入wm打开Tlist和WM

set showcmd

"Taglist插件的设置

let g:Tlist_Use_Right_Window=1

let g:Tlist_Show_One_File=1

let g:Tlist_Compact_Format=1

let Tlist_Exit_OnlyWindow=1

let g:winManagerWindowLayout='FileExplorer|TagList'

"Tree explorer的设置

let g:treeExplVertical=1

let g:treeExplWinSize=30

"gvim打开以后最大化

"au GUIEnter * simalt ~x

"光标在窗口上下边界时距离边界7行即开始滚屏

set so=7

"配色

" Avoid clearing hilight definition in plugins

if !exists("g:vimrc_loaded")

" color scheme

if has("gui_running")

set guioptions-=T "隐藏工具栏

set guioptions-=m

set guioptions-=L

set guioptions-=r

color blackboard

"colorscheme professional

"set guifont=YaHeiConsolasHybrid 13

set guifont=Monaco 13

"中文字体

set guifontset=Microsoft YaHei 13

"对于html,xml文件,通过ctrl+_来closetag

if has("autocmd")

autocmd FileType text,xml,html,perl,shell,bash,python,vim,php,ruby color blackboard

autocmd FileType xml,html vmap

'o'>o-->

autocmd FileType java,c,cpp,cs color desertEx

autocmd FileType

html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal

textwidth=100

autocmd Filetype html,xml,xsl source ~/.vim/plugin/

endif " has("autocmd")

else

color desert

"colorscheme zellner

"对于html,xml文件,通过ctrl+_来closetag

if has("autocmd")

autocmd FileType xml,html vmap

'o'>o-->

autocmd FileType

html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal

textwidth=100

autocmd Filetype html,xml,xsl source ~/.vim/plugin/

endif " has("autocmd")

endif " has

endif " exists(...)

"这个是依赖终端的

"set background=dark

"显示行号

set number

"语法高亮度显示

syntax on

"检测文件的类型 开启codesnip

filetype on

filetype plugin on

filetype indent on

set completeopt=longest,menu

set runtimepath+=~/.vim/textmateOnly

set runtimepath+=/home/hunch/.vim/after

so ~/.vim/plugin/

let g:SuperTabDefaultCompletionType=""

"鼠标支持

if has('mouse') set mouse=a

endif

"缩进相关

" 继承前一行的缩进方式,特别适用于多行注释

"set autoindent

" 为C程序提供自动缩进

"set smartindent

" 使用C样式的缩进

set cindent

function! GnuIndent()

setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1

setlocal shiftwidth=2

setlocal tabstop=8

endfunction

au FileType c,cpp setlocal cinoptions=:0,g0,(0,w1 shiftwidth=4 tabstop=4

softtabstop=4

au FileType diff setlocal shiftwidth=4 tabstop=4

au FileType html setlocal autoindent indentexpr=

au FileType changelog setlocal textwidth=76

" Recognize standard C++ headers

au BufEnter /usr/include/c++/* setf cpp

au BufEnter /usr/include/g++-3/* setf cpp

" Setting for files following the GNU coding standard

au BufEnter /usr/* call GnuIndent()

function! RemoveTrailingSpace()

if $VIM_HATE_SPACE_ERRORS != '0' &&

(&filetype == 'c' || &filetype == 'cpp' || &filetype == 'vim')

normal m`

silent! :%s/s+$//e

normal ``

endif

endfunction

" Remove trailing spaces for C/C++ and Vim files

au BufWritePre * call RemoveTrailingSpace()

if &term=="xterm"

set t_Co=8 set t_Sb=^[[4%dm

set t_Sf=^[[3%dm

endif

"set shiftwidth=2

"set tabstop=4

"set softtabstop=4

"set expandtab

" ambiwidth 默认值为 single。在其值为 single 时,

" 若 encoding 为 utf-8,gvim 显示全角符号时就会

" 出问题,会当作半角显示。

set ambiwidth=double

set autoread " 自动重新加载外部修改内容

set autochdir " 自动切换当前目录为当前文件所在的目录

"No bell settings {{{

set noerrorbells

set visualbell

if has('autocmd')

autocmd GUIEnter * set vb t_vb=

endif

"No bell settings End }}}

"在编辑过程中,在右下角显示光标位置的状态行

set ruler

"set rulerformat=%20(%2*%<%f%= %m%r %3l %c %p%%%)

" 启动的时候不显示那个援助索马里儿童的提示

set shortmess=atI

set nolinebreak " 在单词中间断行

" 在状态栏显示目前所执行的指令,未完成的指令片段亦

" 会显示出来

set showcmd

set wrap " 自动换行显示

"CmdLine settings {{{

set cmdheight=1 " 设定命令行的行数为 1

set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)

:set statusline=%F%m%r%h%w [FORMAT=%{&ff}] [TYPE=%Y]

[ASCII=%03.3b] [HEX=%02.2B] [POS=%04l,%04v][%p%%] [LEN=%L]

"

" 高亮字符,让其不受100列限制

":highlight OverLength ctermbg=red ctermfg=white guibg=grey guifg=white

":match OverLength '%101v.*'

" 状态行颜色

highlight StatusLine guifg=SlateBlue guibg=Yellow

highlight StatusLineNC guifg=Gray guibg=White

"显示匹配括号

set showmatch

"默认无备份

set nobackup

set nowritebackup

"在insert模式下能用删除键进行删除

set backspace=indent,eol,start

"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

set nocp

" 增强模式中的命令行自动完成操作

set wildmenu

"文字编码加入utf8

" 设定默认解码

set fenc=utf-8

set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

set enc=utf-8

let &termencoding=&encoding

" 使用英文菜单,工具条及消息提示

set langmenu=none

"自动缩排

set ai

"搜索不分大小写

set ic

"标识关键字

set hls

" 不要闪烁

set novisualbell

"设置语法折叠

set foldmethod=syntax

set foldcolumn=3 "设置折叠区域的宽度 set foldclose=all "设置为自动关闭折叠

" 用空格键来开关折叠

set foldenable

nnoremap @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')

"设置帮助语言

if version >= 603

set helplang=cn

set encoding=utf-8

endif

"编辑状态保存

au BufWinLeave * mkview

au BufWinEnter * silent loadview

" Line highlight 設此標整行會標註顏色

set cursorline

" Column highlight 設此是遊標整列會標註顏色

set cursorcolumn

"highlight CursorLine cterm=none ctermbg=2 ctermfg=0

"ctags设置

set tags=/home/hunch/.vim/stltags

"set tags+=/home/hunch/.vim/sgitag

"set tags+=/home/hunch/.vim/ctags

"set tags+=/home/hunch/.vim/glibctag

"智能补全ctags -R --c++-kinds=+p --fields=+iaS --extra=+q

let OmniCpp_DefaultNamespaces = ["std"]

let OmniCpp_GlobalScopeSearch = 1 " 0 or 1

let OmniCpp_NamespaceSearch = 1 " 0 , 1 or 2

let OmniCpp_DisplayMode = 1

let OmniCpp_ShowScopeInAbbr = 0

let OmniCpp_ShowPrototypeInAbbr = 1

let OmniCpp_ShowAccess = 1

let OmniCpp_MayCompleteDot = 1

let OmniCpp_MayCompleteArrow = 1

let OmniCpp_MayCompleteScope = 1

highlight Pmenu ctermbg=13 guibg=LightGray

highlight PmenuSel ctermbg=7 guibg=DarkBlue guifg=White

highlight PmenuSbar ctermbg=7 guibg=DarkGray

highlight PmenuThumb guibg=Black

"打开自己工程的时候自动加载的脚本

if getfsize(".vimscript")>0

source .vimscript

endif

"

runtime! macros/

augroup myfiletypes

" Clear old autocmds in group

autocmd!

" autoindent with two spaces, always expand tabs

autocmd FileType ruby,eruby,yaml set ai sw=2 sts=2 et

augroup END

"autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete

autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete

"if you want buffer/rails/global completion you must add the following:

autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1

"if you want rails support add the following in addition

autocmd FileType ruby,eruby let g:rubycomplete_rails = 1

"if you want classes included in global completions add the following

autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

"valgrind 相关

let g:valgrind_arguments='--leak-check=yes --num-callers=5000'

"字典完成

:set dictionary-=/usr/share/dict/words

dictionary+=/usr/share/dict/words

"cscope

if has("cscope")

set csprg=/usr/bin/cscope

set csto=0

set nocst

set nocsverb

" add any database in current directory

if filereadable("")

cs add

" else add database pointed to by environment

elseif $CSCOPE_DB != ""

cs add $CSCOPE_DB

endif

set csverb endif

map :cstag =expand("")

nmap s :cs find s =expand("")

nmap g :cs find g =expand("")

nmap c :cs find c =expand("")

nmap t :cs find t =expand("")

nmap e :cs find e =expand("")

nmap f :cs find f =expand("")

nmap i :cs find i ^=expand("")$

nmap d :cs find d =expand("")

" Using 'CTRL-spacebar' then a search type makes the vim window

" split horizontally, with search result displayed in

" the new window.

nmap s :scs find s =expand("")

nmap g :scs find g =expand("")

nmap c :scs find c =expand("")

nmap t :scs find t =expand("")

nmap e :scs find e =expand("")

nmap f :scs find f =expand("")

nmap i :scs find i ^=expand("")$

nmap d :scs find d =expand("")

" Hitting CTRL-space *twice* before the search type does a vertical

" split instead of a horizontal one

nmap s

:vert scs find s =expand("")

nmap g

:vert scs find g =expand("")

nmap c

:vert scs find c =expand("")

nmap t

:vert scs find t =expand("")

nmap e

:vert scs find e =expand("")

nmap i

:vert scs find i ^=expand("")$

nmap d

:vert scs find d =expand("")

"runtime ftplugin/

let Vimplate = "$HOME/bin/vimplate"

fun! ReadMan() " Assign current word under cursor to a script variable:

let s:man_word = expand('')

" Open a new window:

:exe ":wincmd n"

" Read in the manpage for man_word (col -b is for formatting):

:exe ":r!man " . s:man_word . " | col -b"

" Goto

:exe ":goto"

" and delete it:

:exe ":delete"

endfun

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Autocommands

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"加上日期 对应F2

:map gg:read !date

" bind :CD to :cd %:h, then change cwd to the dir that includes current

file

sil! com -nargs=0 CD exe 'cd %:h'

" F5编译和运行C程序,F6编译和运行C++程序

" 请注意,下述代码在windows下使用会报错

" 需要去掉./这两个字符

" C的编译和运行

map :call CompileRunGcc()

func! CompileRunGcc()

exec "w"

exec "!gcc -Wall -g % -o %<"

exec "! ./%<"

endfunc

" C++的编译和运行

map :call CompileRunGpp()

func! CompileRunGpp()

exec "w"

exec "!g++ -Wall -g % -o %<"

exec "! ./%<" endfunc

" 能够漂亮地显示.NFO文件

set encoding=utf-8

function! SetFileEncodings(encodings)

let b:myfileencodingsbak=&fileencodings

let &fileencodings=a:encodings

endfunction

function! RestoreFileEncodings()

let &fileencodings=b:myfileencodingsbak

unlet b:myfileencodingsbak

endfunction

au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single

au BufReadPost *.nfo call RestoreFileEncodings()

" 高亮显示普通txt文件(需要脚本)

"au BufRead,BufNewFile * setfiletype txt

" Map the M key to the ReadMan function:

map M :call ReadMan()

"csupport

let g:alternateNoDefaultAlternate = 1

"

nnoremap :A

nmap wm :WMToggle

" 双反斜杠即可打开bufexplorer

map be

" Ctrl+Enter也可以切换buffer

map C-Enter C-Tab

nnoremap :tabprevious

:set cscopequickfix=s-,c-,d-,i-,t-,e-

nnoremap :Grep

":inoremap ( ()i

":inoremap ) =ClosePair(')')

":inoremap { {}i

":inoremap } =ClosePair('}')

":inoremap [ []i ":inoremap ] =ClosePair(']')

":inoremap < <>i

":inoremap > =ClosePair('>')

function ClosePair(char)

if getline('.')[col('.') - 1] == a:char

return ""

else

return a:char

endif

endf

" mapping

" 如果下拉菜单弹出,回车映射为接受当前所选项目,否则,仍映射为回车;

"

" 如果下拉菜单弹出,CTRL-J映射为在下拉菜单中向下翻页。否则映射为CTRL-X

CTRL-O;

"

" 如果下拉菜单弹出,CTRL-K映射为在下拉菜单中向上翻页,否则仍映射为CTRL-K;

"

" 如果下拉菜单弹出,CTRL-U映射为CTRL-E,即停止补全,否则,仍映射为CTRL-U;

inoremap pumvisible()?"":""

inoremap

pumvisible()?"":""

inoremap

pumvisible()?"":""

inoremap pumvisible()?"":""a

inoremap pumvisible() ? "" : "u"

inoremap pumvisible() ? "" :

"=pumvisible() ? "" : """

inoremap pumvisible() ? "" :

"=pumvisible() ? "" :

"""

" minibufexpl插件的一般设置

"let g:miniBufExplMapWindowNavArrows = 1

"let g:miniBufExplModSelTarget = 1

"实现 向前循环切换到每个buffer上,并在当前窗口打开

"let g:miniBufExplMapCTabSwitchBufs = 1

" 向后循环切换到每个buffer上,并在当前窗口打开 "可以用切换到上下左右的窗口中去

"let g:miniBufExplMapWindowNavVim = 1

"选中一段文字并全文搜索这段文字

:vnoremap ,/ y/=escape(@", '.*$^~[]')

:vnoremap ,? y?=escape(@", '.*$^~[]')

" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示

:runtime! ftplugin/

set keywordprg=dicty

ab ssh #!/bin/bash

ab ppy #!/usr/bin/python

ab ppl #!/usr/bin/perl<{}>

ab rru #!/usr/bin/ruby<{}>

Ubuntu vimrc的设置适用于Ubuntu与Fedora系统,其他系统没有得到验证。

在Ubuntu中vim的配置文件存放在/etc/vim目录中,配置文件名为Ubuntu vimrc

在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc

在终端 输入以下命令来编辑Ubuntu vimrc配置文件:

sudo vim /etc/vim/vimrc 或者 sudo gedit /etc/vim/vimrc

在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。

在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便。

相关命令如下:

创建命令为:

$vi ~/.vimrc

设置完后

$:x 或者 $wq

进行保存退出即可。

下面给出一个例子,其中列出了经常用到的设置,详细的设置信息请参照参考资料:

“双引号开始的行为注释行,下同 “去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

set nocompatible

“显示行号

set nummber

“检测文件的类型

filetype on

“记录历史的行数

set history=1000

“背景使用黑色

set background=dark

“语法高亮度显示

syntax on

“下面两行在进行编写代码时,在格式对起上很有用;

“第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;

“第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编

“写上很有用

set autoindent

set smartindent

“第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格

set tabstop=4

set shiftwidth=4

“设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

set showmatch

“去除vim的GUI版本中的toolbar

set guioptions-=T

“当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声

set vb t_vb=

“在编辑过程中,在右下角显示光标位置的状态行

set ruler

“默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示

set nohls

“查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一

“个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依

“次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词

“时,别忘记回车

set incsearch

“修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀

if has(“vms”)

set nobackup

else

set backup

endif

如果设置完后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包,查询命令为:

$rpm –q vim-enhanced

参考资料:

1.vim的完全翻译版在下面连接处可以找到

/

可以下栽其中的一个PDF版本,里面介绍的很详细,强烈推荐:)

2.更详细的vim信息可以访问:

/[/url]

3.一个带有英文注释的.vimrc例子

/

2023年8月3日发(作者:)

" 在处理未保存或只读文件的时候,弹出确认 set confirm " 带有如下符号的单词不要被换行分割

set iskeyword+=_,$,@,%,#,-

"Tlist 和 wm的设置

"命令模式输入wm打开Tlist和WM

set showcmd

"Taglist插件的设置

let g:Tlist_Use_Right_Window=1

let g:Tlist_Show_One_File=1

let g:Tlist_Compact_Format=1

let Tlist_Exit_OnlyWindow=1

let g:winManagerWindowLayout='FileExplorer|TagList'

"Tree explorer的设置

let g:treeExplVertical=1

let g:treeExplWinSize=30

"gvim打开以后最大化

"au GUIEnter * simalt ~x

"光标在窗口上下边界时距离边界7行即开始滚屏

set so=7

"配色

" Avoid clearing hilight definition in plugins

if !exists("g:vimrc_loaded")

" color scheme

if has("gui_running")

set guioptions-=T "隐藏工具栏

set guioptions-=m

set guioptions-=L

set guioptions-=r

color blackboard

"colorscheme professional

"set guifont=YaHeiConsolasHybrid 13

set guifont=Monaco 13

"中文字体

set guifontset=Microsoft YaHei 13

"对于html,xml文件,通过ctrl+_来closetag

if has("autocmd")

autocmd FileType text,xml,html,perl,shell,bash,python,vim,php,ruby color blackboard

autocmd FileType xml,html vmap

'o'>o-->

autocmd FileType java,c,cpp,cs color desertEx

autocmd FileType

html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal

textwidth=100

autocmd Filetype html,xml,xsl source ~/.vim/plugin/

endif " has("autocmd")

else

color desert

"colorscheme zellner

"对于html,xml文件,通过ctrl+_来closetag

if has("autocmd")

autocmd FileType xml,html vmap

'o'>o-->

autocmd FileType

html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal

textwidth=100

autocmd Filetype html,xml,xsl source ~/.vim/plugin/

endif " has("autocmd")

endif " has

endif " exists(...)

"这个是依赖终端的

"set background=dark

"显示行号

set number

"语法高亮度显示

syntax on

"检测文件的类型 开启codesnip

filetype on

filetype plugin on

filetype indent on

set completeopt=longest,menu

set runtimepath+=~/.vim/textmateOnly

set runtimepath+=/home/hunch/.vim/after

so ~/.vim/plugin/

let g:SuperTabDefaultCompletionType=""

"鼠标支持

if has('mouse') set mouse=a

endif

"缩进相关

" 继承前一行的缩进方式,特别适用于多行注释

"set autoindent

" 为C程序提供自动缩进

"set smartindent

" 使用C样式的缩进

set cindent

function! GnuIndent()

setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1

setlocal shiftwidth=2

setlocal tabstop=8

endfunction

au FileType c,cpp setlocal cinoptions=:0,g0,(0,w1 shiftwidth=4 tabstop=4

softtabstop=4

au FileType diff setlocal shiftwidth=4 tabstop=4

au FileType html setlocal autoindent indentexpr=

au FileType changelog setlocal textwidth=76

" Recognize standard C++ headers

au BufEnter /usr/include/c++/* setf cpp

au BufEnter /usr/include/g++-3/* setf cpp

" Setting for files following the GNU coding standard

au BufEnter /usr/* call GnuIndent()

function! RemoveTrailingSpace()

if $VIM_HATE_SPACE_ERRORS != '0' &&

(&filetype == 'c' || &filetype == 'cpp' || &filetype == 'vim')

normal m`

silent! :%s/s+$//e

normal ``

endif

endfunction

" Remove trailing spaces for C/C++ and Vim files

au BufWritePre * call RemoveTrailingSpace()

if &term=="xterm"

set t_Co=8 set t_Sb=^[[4%dm

set t_Sf=^[[3%dm

endif

"set shiftwidth=2

"set tabstop=4

"set softtabstop=4

"set expandtab

" ambiwidth 默认值为 single。在其值为 single 时,

" 若 encoding 为 utf-8,gvim 显示全角符号时就会

" 出问题,会当作半角显示。

set ambiwidth=double

set autoread " 自动重新加载外部修改内容

set autochdir " 自动切换当前目录为当前文件所在的目录

"No bell settings {{{

set noerrorbells

set visualbell

if has('autocmd')

autocmd GUIEnter * set vb t_vb=

endif

"No bell settings End }}}

"在编辑过程中,在右下角显示光标位置的状态行

set ruler

"set rulerformat=%20(%2*%<%f%= %m%r %3l %c %p%%%)

" 启动的时候不显示那个援助索马里儿童的提示

set shortmess=atI

set nolinebreak " 在单词中间断行

" 在状态栏显示目前所执行的指令,未完成的指令片段亦

" 会显示出来

set showcmd

set wrap " 自动换行显示

"CmdLine settings {{{

set cmdheight=1 " 设定命令行的行数为 1

set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)

:set statusline=%F%m%r%h%w [FORMAT=%{&ff}] [TYPE=%Y]

[ASCII=%03.3b] [HEX=%02.2B] [POS=%04l,%04v][%p%%] [LEN=%L]

"

" 高亮字符,让其不受100列限制

":highlight OverLength ctermbg=red ctermfg=white guibg=grey guifg=white

":match OverLength '%101v.*'

" 状态行颜色

highlight StatusLine guifg=SlateBlue guibg=Yellow

highlight StatusLineNC guifg=Gray guibg=White

"显示匹配括号

set showmatch

"默认无备份

set nobackup

set nowritebackup

"在insert模式下能用删除键进行删除

set backspace=indent,eol,start

"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

set nocp

" 增强模式中的命令行自动完成操作

set wildmenu

"文字编码加入utf8

" 设定默认解码

set fenc=utf-8

set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

set enc=utf-8

let &termencoding=&encoding

" 使用英文菜单,工具条及消息提示

set langmenu=none

"自动缩排

set ai

"搜索不分大小写

set ic

"标识关键字

set hls

" 不要闪烁

set novisualbell

"设置语法折叠

set foldmethod=syntax

set foldcolumn=3 "设置折叠区域的宽度 set foldclose=all "设置为自动关闭折叠

" 用空格键来开关折叠

set foldenable

nnoremap @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')

"设置帮助语言

if version >= 603

set helplang=cn

set encoding=utf-8

endif

"编辑状态保存

au BufWinLeave * mkview

au BufWinEnter * silent loadview

" Line highlight 設此標整行會標註顏色

set cursorline

" Column highlight 設此是遊標整列會標註顏色

set cursorcolumn

"highlight CursorLine cterm=none ctermbg=2 ctermfg=0

"ctags设置

set tags=/home/hunch/.vim/stltags

"set tags+=/home/hunch/.vim/sgitag

"set tags+=/home/hunch/.vim/ctags

"set tags+=/home/hunch/.vim/glibctag

"智能补全ctags -R --c++-kinds=+p --fields=+iaS --extra=+q

let OmniCpp_DefaultNamespaces = ["std"]

let OmniCpp_GlobalScopeSearch = 1 " 0 or 1

let OmniCpp_NamespaceSearch = 1 " 0 , 1 or 2

let OmniCpp_DisplayMode = 1

let OmniCpp_ShowScopeInAbbr = 0

let OmniCpp_ShowPrototypeInAbbr = 1

let OmniCpp_ShowAccess = 1

let OmniCpp_MayCompleteDot = 1

let OmniCpp_MayCompleteArrow = 1

let OmniCpp_MayCompleteScope = 1

highlight Pmenu ctermbg=13 guibg=LightGray

highlight PmenuSel ctermbg=7 guibg=DarkBlue guifg=White

highlight PmenuSbar ctermbg=7 guibg=DarkGray

highlight PmenuThumb guibg=Black

"打开自己工程的时候自动加载的脚本

if getfsize(".vimscript")>0

source .vimscript

endif

"

runtime! macros/

augroup myfiletypes

" Clear old autocmds in group

autocmd!

" autoindent with two spaces, always expand tabs

autocmd FileType ruby,eruby,yaml set ai sw=2 sts=2 et

augroup END

"autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete

autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete

"if you want buffer/rails/global completion you must add the following:

autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1

"if you want rails support add the following in addition

autocmd FileType ruby,eruby let g:rubycomplete_rails = 1

"if you want classes included in global completions add the following

autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

"valgrind 相关

let g:valgrind_arguments='--leak-check=yes --num-callers=5000'

"字典完成

:set dictionary-=/usr/share/dict/words

dictionary+=/usr/share/dict/words

"cscope

if has("cscope")

set csprg=/usr/bin/cscope

set csto=0

set nocst

set nocsverb

" add any database in current directory

if filereadable("")

cs add

" else add database pointed to by environment

elseif $CSCOPE_DB != ""

cs add $CSCOPE_DB

endif

set csverb endif

map :cstag =expand("")

nmap s :cs find s =expand("")

nmap g :cs find g =expand("")

nmap c :cs find c =expand("")

nmap t :cs find t =expand("")

nmap e :cs find e =expand("")

nmap f :cs find f =expand("")

nmap i :cs find i ^=expand("")$

nmap d :cs find d =expand("")

" Using 'CTRL-spacebar' then a search type makes the vim window

" split horizontally, with search result displayed in

" the new window.

nmap s :scs find s =expand("")

nmap g :scs find g =expand("")

nmap c :scs find c =expand("")

nmap t :scs find t =expand("")

nmap e :scs find e =expand("")

nmap f :scs find f =expand("")

nmap i :scs find i ^=expand("")$

nmap d :scs find d =expand("")

" Hitting CTRL-space *twice* before the search type does a vertical

" split instead of a horizontal one

nmap s

:vert scs find s =expand("")

nmap g

:vert scs find g =expand("")

nmap c

:vert scs find c =expand("")

nmap t

:vert scs find t =expand("")

nmap e

:vert scs find e =expand("")

nmap i

:vert scs find i ^=expand("")$

nmap d

:vert scs find d =expand("")

"runtime ftplugin/

let Vimplate = "$HOME/bin/vimplate"

fun! ReadMan() " Assign current word under cursor to a script variable:

let s:man_word = expand('')

" Open a new window:

:exe ":wincmd n"

" Read in the manpage for man_word (col -b is for formatting):

:exe ":r!man " . s:man_word . " | col -b"

" Goto

:exe ":goto"

" and delete it:

:exe ":delete"

endfun

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Autocommands

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"加上日期 对应F2

:map gg:read !date

" bind :CD to :cd %:h, then change cwd to the dir that includes current

file

sil! com -nargs=0 CD exe 'cd %:h'

" F5编译和运行C程序,F6编译和运行C++程序

" 请注意,下述代码在windows下使用会报错

" 需要去掉./这两个字符

" C的编译和运行

map :call CompileRunGcc()

func! CompileRunGcc()

exec "w"

exec "!gcc -Wall -g % -o %<"

exec "! ./%<"

endfunc

" C++的编译和运行

map :call CompileRunGpp()

func! CompileRunGpp()

exec "w"

exec "!g++ -Wall -g % -o %<"

exec "! ./%<" endfunc

" 能够漂亮地显示.NFO文件

set encoding=utf-8

function! SetFileEncodings(encodings)

let b:myfileencodingsbak=&fileencodings

let &fileencodings=a:encodings

endfunction

function! RestoreFileEncodings()

let &fileencodings=b:myfileencodingsbak

unlet b:myfileencodingsbak

endfunction

au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single

au BufReadPost *.nfo call RestoreFileEncodings()

" 高亮显示普通txt文件(需要脚本)

"au BufRead,BufNewFile * setfiletype txt

" Map the M key to the ReadMan function:

map M :call ReadMan()

"csupport

let g:alternateNoDefaultAlternate = 1

"

nnoremap :A

nmap wm :WMToggle

" 双反斜杠即可打开bufexplorer

map be

" Ctrl+Enter也可以切换buffer

map C-Enter C-Tab

nnoremap :tabprevious

:set cscopequickfix=s-,c-,d-,i-,t-,e-

nnoremap :Grep

":inoremap ( ()i

":inoremap ) =ClosePair(')')

":inoremap { {}i

":inoremap } =ClosePair('}')

":inoremap [ []i ":inoremap ] =ClosePair(']')

":inoremap < <>i

":inoremap > =ClosePair('>')

function ClosePair(char)

if getline('.')[col('.') - 1] == a:char

return ""

else

return a:char

endif

endf

" mapping

" 如果下拉菜单弹出,回车映射为接受当前所选项目,否则,仍映射为回车;

"

" 如果下拉菜单弹出,CTRL-J映射为在下拉菜单中向下翻页。否则映射为CTRL-X

CTRL-O;

"

" 如果下拉菜单弹出,CTRL-K映射为在下拉菜单中向上翻页,否则仍映射为CTRL-K;

"

" 如果下拉菜单弹出,CTRL-U映射为CTRL-E,即停止补全,否则,仍映射为CTRL-U;

inoremap pumvisible()?"":""

inoremap

pumvisible()?"":""

inoremap

pumvisible()?"":""

inoremap pumvisible()?"":""a

inoremap pumvisible() ? "" : "u"

inoremap pumvisible() ? "" :

"=pumvisible() ? "" : """

inoremap pumvisible() ? "" :

"=pumvisible() ? "" :

"""

" minibufexpl插件的一般设置

"let g:miniBufExplMapWindowNavArrows = 1

"let g:miniBufExplModSelTarget = 1

"实现 向前循环切换到每个buffer上,并在当前窗口打开

"let g:miniBufExplMapCTabSwitchBufs = 1

" 向后循环切换到每个buffer上,并在当前窗口打开 "可以用切换到上下左右的窗口中去

"let g:miniBufExplMapWindowNavVim = 1

"选中一段文字并全文搜索这段文字

:vnoremap ,/ y/=escape(@", '.*$^~[]')

:vnoremap ,? y?=escape(@", '.*$^~[]')

" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示

:runtime! ftplugin/

set keywordprg=dicty

ab ssh #!/bin/bash

ab ppy #!/usr/bin/python

ab ppl #!/usr/bin/perl<{}>

ab rru #!/usr/bin/ruby<{}>

Ubuntu vimrc的设置适用于Ubuntu与Fedora系统,其他系统没有得到验证。

在Ubuntu中vim的配置文件存放在/etc/vim目录中,配置文件名为Ubuntu vimrc

在Fedora中vim的配置文件存放在/etc目录中,配置文件名为Ubuntu vimrc

在终端 输入以下命令来编辑Ubuntu vimrc配置文件:

sudo vim /etc/vim/vimrc 或者 sudo gedit /etc/vim/vimrc

在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。

在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便。

相关命令如下:

创建命令为:

$vi ~/.vimrc

设置完后

$:x 或者 $wq

进行保存退出即可。

下面给出一个例子,其中列出了经常用到的设置,详细的设置信息请参照参考资料:

“双引号开始的行为注释行,下同 “去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

set nocompatible

“显示行号

set nummber

“检测文件的类型

filetype on

“记录历史的行数

set history=1000

“背景使用黑色

set background=dark

“语法高亮度显示

syntax on

“下面两行在进行编写代码时,在格式对起上很有用;

“第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;

“第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编

“写上很有用

set autoindent

set smartindent

“第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格

set tabstop=4

set shiftwidth=4

“设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

set showmatch

“去除vim的GUI版本中的toolbar

set guioptions-=T

“当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声

set vb t_vb=

“在编辑过程中,在右下角显示光标位置的状态行

set ruler

“默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示

set nohls

“查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一

“个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依

“次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词

“时,别忘记回车

set incsearch

“修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀

if has(“vms”)

set nobackup

else

set backup

endif

如果设置完后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包,查询命令为:

$rpm –q vim-enhanced

参考资料:

1.vim的完全翻译版在下面连接处可以找到

/

可以下栽其中的一个PDF版本,里面介绍的很详细,强烈推荐:)

2.更详细的vim信息可以访问:

/[/url]

3.一个带有英文注释的.vimrc例子

/