vim简单配置

  1. " 设置编码
  2. set fileencodings=utf-8,gb2312
  3. set termencoding=utf-8
  4. set encoding=utf-8
  5. " 显示行号
  6. set number
  7. " 突出显示当前行
  8. set cursorline
  9. " 显示括号匹配
  10. set showmatch
  11. " 设置缩进
  12. " 设置Tab长度
  13. set tabstop=4
  14. " 设置自动缩进长度
  15. set shiftwidth=4
  16. " 继承上一行的缩进方式
  17. set autoindent
  18. " 总是显示状态栏
  19. set laststatus=2
  20. " 显示光标当前位置
  21. set ruler
  22. " 显示空格和Tab
  23. set listchars=tab:>-,trail:-
  24. " 语法高亮
  25. syntax enable
  26. " 允许折叠
  27. set foldenable
  28. " 手动折叠
  29. set foldmethod=manual
  30. " 在行和段开始处使用制表符
  31. set smarttab
  32. "自动补全
  33. :inoremap ( ()
  34. :inoremap { {}
  35. :inoremap [ []
  36. :inoremap " ""
  37. :inoremap ' ''
  1. set nocp "设置兼容
  2. set expandtab "设置tab
  3. set shiftwidth=4 "设置tab的间隔
  4. set tabstop=4 "四个空格代表一个tab
  5. set sts=4
  6. set showmatch "在输入括号时光标会短暂地跳到与之相匹配的括号处
  7. set autoindent "设置自动缩进
  8. " set smartindent "设置智能缩进
  9. set nowrap "设置自动换行
  10. set tw=500
  11. set lbr
  12. set number "设置是否显示行
  13. set guifont=Monospace\ 11 "设置字体大小
  14. set encoding=utf-8 "设置编码为utf-8
  15. set fileencoding=utf-8
  16. set fileencodings=ucs-bom,utf-8,GB18030,cp936,big5,euc-jp,euc-kr,latin1
  17. set helplang=cn "帮助中文支持
  18. colorscheme tango "设置主体颜色
  19. "set mouse=v " 设置粘贴和复制
  20. "自动补全配置
  21. autocmd FileType python set omnifunc=pythoncomplete#Complete
  22. autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
  23. autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
  24. autocmd FileType css set omnifunc=csscomplete#CompleteCSS
  25. autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
  26. autocmd FileType php set omnifunc=phpcomplete#CompletePHP
  27. autocmd FileType c set omnifunc=ccomplete#Complete
  28. " =================================进行Taglist的设置<Begin>============================
  29. map <F3> :TlistToggle<CR>
  30. "map <F3> :silent! Tlist<CR> "按下F3就可以呼出了
  31. "let Tlist_Ctags_Cmd='/usr/bin/ctags' "因为我们放在环境变量里,所以可以直接执行
  32. let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边
  33. "let Tlist_Show_One_File=1 "让taglist可以同时展示多个文件的函数列表
  34. "let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
  35. "let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim
  36. "let Tlist_Process_File_Always=0 "是否一直处理tags.1:处理;0:不处理
  37. "let Tlist_Inc_Winwidth=0 "不是一直实时更新tags,因为没有必要
  38. " =================================进行Taglist的设置<End>==============================
  39. " ############################键盘映射设置区域###############################
  40. map <F2> :NERDTreeToggle<CR>
  41. map <F4> t :NERDTreeMirror<CR>
  42. " 对应使用函数的配置
  43. set guitablabel=%{ShortTabLabel()}
  44. function ShortTabLabel ()
  45. let bufnrlist = tabpagebuflist (v:lnum)
  46. let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1])
  47. let filename = fnamemodify (label, ':t')
  48. return filename
  49. endfunction
  50. set tabline=%!MyTabLine()
  51. function MyTabLine()
  52. let s = ''
  53. for i in range(tabpagenr('$'))
  54. " 选择高亮
  55. if i + 1 == tabpagenr()
  56. let s .= '%#TabLineSel#'
  57. else
  58. let s .= '%#TabLine#'
  59. endif
  60. " 设置标签页号 (用于鼠标点击)
  61. let s .= '%' . (i + 1) . 'T'
  62. " MyTabLabel() 提供完整路径标签 MyShortTabLabel 提供文件名标签
  63. let s .= ' %{MyShortTabLabel(' . (i + 1) . ')} '
  64. endfor
  65. " 最后一个标签页之后用 TabLineFill 填充并复位标签页号
  66. let s .= '%#TabLineFill#%T'
  67. " 右对齐用于关闭当前标签页的标签
  68. if tabpagenr('$') > 1
  69. let s .= '%=%#TabLine#%999Xclose'
  70. endif
  71. return s
  72. endfunction
  73. " 文件名标签
  74. function MyShortTabLabel(n)
  75. let buflist = tabpagebuflist(a:n)
  76. let label = bufname (buflist[tabpagewinnr (a:n) -1])
  77. let filename = fnamemodify (label, ':t')
  78. return filename
  79. endfunction
  80. "完整路径标签
  81. function MyTabLabel(n)
  82. let buflist = tabpagebuflist(a:n)
  83. let winnr = tabpagewinnr(a:n)
  84. return bufname(buflist[winnr - 1])
  85. endfunction
  86. " vim 标签样式
  87. " TabLineFill tab pages line, where there are no labels
  88. hi TabLineFill term=none
  89. hi TabLineFill ctermfg=DarkGrey
  90. hi TabLineFill guifg=#777777
  91. " TabLineSel tab pages line, active tab page label
  92. hi TabLineSel term=inverse
  93. hi TabLineSel cterm=none ctermfg=yellow ctermbg=Black
  94. hi TabLineSel gui=none guifg=yellow guibg=Black
  95. " Develop editing options
  96. au FileType vim setl expandtab
  97. au FileType vim setl shiftwidth=2
  98. au FileType vim setl tabstop=2
  99. " 显示状态栏(默认值为 1,无法显示状态栏)
  100. set laststatus=2
  101. " Format the statusline
  102. set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}E5%h\ \ \ Line:\ %l/%L:%c
  103. function! CurDir()
  104. let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g")
  105. return curdir
  106. endfunction
  107. "#######################设置PHP函数自动提醒#########################Start
  108. "设置字典自动完成
  109. set complete+=k
  110. "设置字典
  111. set dictionary=~/.vim/doc/php_funclist.txt
  112. " 自动完成使用TAB键
  113. function! InsertTabWrapper()
  114. let col=col('.')-1
  115. if !col || getline('.')[col-1] !~ '\k'
  116. return "\<TAB>"
  117. else
  118. return "\<C-N>"
  119. endif
  120. endfunction
  121. "InsertTabWrapper映射到TAB上
  122. inoremap <TAB> <C-R>=InsertTabWrapper()<CR>
  123. "#######################设置PHP函数自动提醒#########################End
  124. "#######中括号 大括号 小括号 自动补全
  125. :inoremap ( ()<ESC>i
  126. :inoremap ) <c-r>=ClosePair(')')<CR>
  127. :inoremap { {}<ESC>i
  128. :inoremap } <c-r>=ClosePair('}')<CR>
  129. :inoremap [ []<ESC>i
  130. :inoremap ] <c-r>=ClosePair(']')<CR>
  131. :inoremap < <><ESC>i
  132. :inoremap > <c-r>=ClosePair('>')<CR>
  133. function ClosePair(char)
  134. if getline('.')[col('.') - 1] == a:char
  135. return "\<Right>"
  136. else
  137. return a:char
  138. endif
  139. endfunction
  140. "#######中括号 大括号 小括号 自动补全