以下是我自己的vim配置文件。个人建议,还是使用完整的命令比较好,这样有助于理解记忆,尤其对于初次接触的人来说更重要。




"显示行号,取消显示行号为nonumber,诸多进行相反设置都是加前缀no即可


"设置用于显示行号的宽度



"在下方显示标尺



set encoding=utf8



"搜索后,高亮


"搜索时,没有回车就高亮


"搜索时,忽略大小写



set showmatch



"隐藏菜单栏



"自动将当前目录切换为编辑文件所在的目录



"高亮当前列


"高亮当前行



"窗口打开后自动最大化,这是对于gvim有效的


autocmd guienter * simalt ~x



set nowrap"不自动换行



set autoread



"取消对vim、的兼容,这样可以使用到vim的一些特性



"显示右侧的滚动条


"显示底部的滚动条



set scrolloff=3 "使光标始终和上下边缘相距3行



set smartindent "回车后,根据上一行自动缩进


set smarttab



set backup "设置备份


set nobackup



syntax on "打开语法高亮



set foldenable


set foldmarker={,}


set foldmethod=marker


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


set foldopen+=search


set foldopen+=undo


set foldlevel=1


set foldcolumn=4


filetype plugin on


highlight normal guifg=#008000 guibg=#000000


"set visualbell t_vb=



"以下是对一些经常用到的命令映射的快捷键


nmap <silent> <F1> :w<cr>


<silent>  <F2> :q<cr>


<silent>  <F3> :x<cr>



set readonly 设置只读


set nomodifiable 设置为不可修改模式


digraphs 显示编码表


changes 打开更改列表


gf 打开以当前字符的文件


ga 显示当前光标下单个字的ascii,十进制,十六进制……


:browse e 打开文件选择框


tabe file 在新的tab中打开文件file


<C-A>,<C-X> 增加,减少当前光标下的数字


:bn 跳转到下一个buffer
:bp  跳转到前一个buffer
:wn 保存当前buffer并跳转到下一个buffer (超有用)
:wp 保存当前buffer并跳转到前一个buffer
:bd 把当前文件从buffer移出 (超有用)



  • 配置文件[codesyntax lang="php" lines="normal"]scriptencoding=utf-8 set number set incsearch set hlsearch set autoindent "set smartindent set autochdir set ignorecase "set textwidth=80 set colorcolumn=+1 set tabstop=4 set shiftwidth=4 set backspace=indent,start,eol set showmatch set matchtime=1 set ruler set foldmethod=syntax "set foldmethod=indent set foldlevel=0 set encoding=utf-8 set termencoding=utf-8 set langmenu=zh_CN.utf-8 language message zh_CN.utf-8 "set titlestring=中文 set nolist set nocursorline set nocursorcolumn syntax on filetype on map <special> <silent> <F1> :call Quit()<CR>" ---Quit map <special> <silent> <F2> :call ContentReload()<CR>" ---Quit map <special> <silent> <F3> :call OpenShell()<CR>" ---Shell map <special> <silent> <F4> :call OpenTaskMgr()<CR>" ---TaskMgr map <F5> :call Test()<CR>" ---Test map <special> <silent> <F6> :call ReloadFile()<CR>" ---ReloadFile map <special> <silent> <F10> :call ReloadRc()<CR>" ---Reload RcFile map <special> <silent> <F11> :call ToggleFullScreen()<CR>" ---FullScreen map <special> <silent> <F12> :call EditRc()<CR>" ---Edit RcFile if has("gui") map <special> <silent> <C-K> :call RestoreWin()<CR>" ---Restore map <special> <silent> <C-M> :call MaxWin()<CR>" ---Maximize map <special> <silent> <C-N> :call MinWin()<CR>" ---Minimize endif map <special> <silent> <C-S> :call Save()<CR>" ---Save map <special> <silent> <C-Tab> :call SwitchWin()<CR>" ---SwitchWin imap <special> <silent> <C-S> <ESC>:write<CR>a imap <special> <silent> <C-Tab> <ESC><C-W><C-W>a function! EditRc() if "" == expand("%:p") :edit ~/.vimrc elseif ".vimrc" != expand("%:t") :split ~/.vimrc endif endfunction function! Test() let s:buf_name = "suren" if !bufexists(s:buf_name) || bufwinnr(s:buf_name) == -1 25vsplit suren set modifiable set buftype=nofile redir @a silent map redir END silent execute "normal " . '"ap' silent :%substitute/^\n// silent :global!/\s*:call.*---/delete silent :%substitute/\s*:call.*---/\t/ silent :%substitute/^\s*// silent :nohlsearch sort set nowrap set colorcolumn="" set readonly set nomodifiable endif endfunction function! SubString(str, begin, len) let str=a:str let begin=a:begin let len=a:len let length=begin+len let rv="" while begin < length let rv=rv.str[begin] let begin=begin+1 endwhile return rv endfunction function! IndexOf(str, sub) let str=a:str let sub=a:sub let subLen=strlen(sub) let len=strlen(str) let len=len-subLen+1 let i=0 while i < len if SubString(str, i, subLen) == sub return i endif let i=i+1 endwhile return -1 endfunction function! LastIndexOf(str, sub) let str=a:str let sub=a:sub let len=strlen(str) let subLen=strlen(sub) let i=len-subLen while i >= 0 if SubString(str, i,subLen) == sub return i endif let i=i-1 endwhile return -1 endfunction function! SortFunc(x, y) let s:index = 0 let s:x_list = split(a:x) let s:y_list = split(a:y) let s:x_len = len(s:x_list) let s:y_len = len(s:y_list) let s:x_is_num = 0 let s:y_is_num = 0 if s:x_list == s:y_list return 0 elseif s:x_len == 0 return -1 elseif s:y_len == 0 return 1 endif for i in s:x_list let s:x = i let s:y = s:y_list[s:index] let s:x_is_num = s:x + 0 let s:y_is_num = s:y + 0 if s:x_is_num != 0 let s:x = s:x_is_num endif if s:y_is_num != 0 let s:y = s:y_is_num endif if s:x > s:y return 1 endif if s:x < s:y return -1 endif let s:index = s:index + 1 if s:index >= s:y_len break endif endfor return 0 endfunction function! Sort(from, to) let s:begin = a:from + 0 let s:end = a:to + 0 if s:begin <= 0 let s:begin = 1 endif if s:end <= 0 let s:end = 1 endif if s:begin > line("$") || s:end > line("$") return endif let s:content = getline(s:begin, s:end) let s:content = sort(s:content, "SortFunc") call DeleteLine(s:begin, s:end) call append(s:begin - 1, s:content) $delete endfunction function! DeleteLine(from, to) let s:begin = a:from + 0 let s:end = a:to + 0 if s:begin < 0 || s:begin > line("$") return endif if s:end < 0 || s:end > line("$") return endif execute "normal " . s:begin . "gg" execute ":" . s:begin . "," . s:end . "delete" endfunction function! Quit() silent :quit endfunction function! ContentReload() silent :e execute "normal G" endfunction function! OpenShell() if has("gui_win32") silent execute "!start cmd" endif endfunction function! OpenTaskMgr() if has("gui_win32") silent execute "!start taskmgr" endif endfunction if !exists("*ReloadRc") function! ReloadRc() silent :source ~/.vimrc endfunction endif if !exists("*ReloadFile") function! ReloadFile() silent :e execute "normal " . s:begin . "G" endfunction endif function! SwapMouse() let s:suren_lib = findfile("suren.dll", &runtimepath) if s:suren_lib != "" call libcall(s:suren_lib, "SwapMouse", "") endif endfunction function! ToggleFullScreen() let s:suren_lib_str = "suren.dll" let s:suren_lib = findfile(s:suren_lib_str, &runtimepath) if !exists("s:suren_fullscreen") let s:suren_fullscreen = 0 endif if s:suren_lib != "" let s:suren_lib = s:suren_lib_str if s:suren_fullscreen == 0 echo s:suren_lib let s:suren_win_info = libcall(s:suren_lib, "FullScreen", "") if len(split(s:suren_win_info)) == 4 let s:suren_win_last_left = split(s:suren_win_info)[0] + 0 let s:suren_win_last_top = split(s:suren_win_info)[1] + 0 let s:suren_win_last_right = split(s:suren_win_info)[2] + 0 let s:suren_win_last_bottom = split(s:suren_win_info)[3] + 0 set guioptions-=m set guioptions-=T let s:suren_fullscreen = 1 endif else call libcall(s:suren_lib, "FullScreen", "") call libcall(s:suren_lib, "SetPosX", s:suren_win_last_left) call libcall(s:suren_lib, "SetPosY", s:suren_win_last_top) call libcall(s:suren_lib, "SetWinWidth", \ s:suren_win_last_right - s:suren_win_last_left) call libcall(s:suren_lib, "SetWinHeight", \ s:suren_win_last_bottom - s:suren_win_last_top) set guioptions+=m set guioptions+=T let s:suren_fullscreen = 0 endif else echo "can't found " . s:suren_lib_str endif endfunction function! MaxWin() simalt ~x endfunction function! MinWin() simalt ~n endfunction function! RestoreWin() simalt ~r endfunction function! SwitchWin() execute "normal \<C-W>\<C-W>" endfunction function! Save() let s:path = expand("%:p") if s:path == "" if has("gui") execute ":browse confirm saveas" else let s:path = input("saveas:") execute ":write " . s:path endif else execute ":write" endif endfunction[/codesyntax]