以下是我自己的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]