1 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 2 " 显示相关 3 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 4 set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示 5 set go= " 不要图形按钮 6 "color asmanian2 " 设置背景主题 7 "set guifont=Courier_New:h10:cANSI " 设置字体 8 autocmd InsertLeave * se nocul " 用浅色高亮当前行 9 autocmd InsertEnter * se cul " 用浅色高亮当前行 10 set ruler " 显示标尺 11 set showcmd " 输入的命令显示出来,看的清楚些 12 "set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议) 13 set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离 14 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "状态行显示的内容 15 set laststatus=2 " 启动显示状态行(1),总是显示状态行(2) 16 "set foldenable " 允许折叠 17 set foldmethod=manual " 手动折叠 18 set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 19 " 显示中文帮助 20 if version >= 603 21 set helplang=cn 22 set encoding=utf-8 23 endif 24 " 自动缩进 25 set autoindent 26 set cindent 27 " Tab键的宽度 28 set tabstop=4 29 " 统一缩进为4 30 set softtabstop=4 31 set shiftwidth=4 32 " 不要用空格代替制表符 33 set noexpandtab 34 " 在行和段开始处使用制表符 35 set smarttab 36 " 显示行号 37 set number 38 " 历史记录数 39 set history=1000 40 "搜索逐字符高亮 41 set hlsearch 42 set incsearch 43 "语言设置 44 set langmenu=zh_CN.UTF-8 45 set helplang=cn 46 " 总是显示状态行 47 set cmdheight=2 48 " 侦测文件类型 49 filetype on 50 " 载入文件类型插件 51 filetype plugin on 52 " 为特定文件类型载入相关缩进文件 53 filetype indent on 54 " 保存全局变量 55 set viminfo+=! 56 " 带有如下符号的单词不要被换行分割 57 set iskeyword+=_,$,@,%,#,- 58 " 字符间插入的像素行数目 59 60 "markdown配置 61 au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set filetype=mkd 62 "rkdown to HTML 63 nmap md :!~/.vim/markdown.pl % > %.html 64 nmap fi :!firefox %.html & 65 66 67 68 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 69 """""新文件标题 70 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 71 "新建.c,.h,.sh,.java文件,自动插入文件头 72 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java,*.py,*.md exec ":call SetTitle()" 73 ""定义函数SetTitle,自动插入文件头 74 func SetTitle() 75 "如果文件类型为.sh文件 76 if &filetype == 'sh' 77 call setline(1,"\#########################################################################") 78 call append(line("."), "\# File Name: ".expand("%")) 79 call append(line(".")+1, "\# Author: ma6174") 80 call append(line(".")+2, "\# mail: ma6174@163.com") 81 call append(line(".")+3, "\# Created Time: ".strftime("%c")) 82 call append(line(".")+4, "\#########################################################################") 83 call append(line(".")+5, "\#!/bin/bash") 84 call append(line(".")+6, "") 85 elseif &filetype == 'python' 86 call setline(1,"#!/usr/bin/env python") 87 call append(line("."),"#coding=utf-8") 88 call append(line(".")+1, "") 89 elseif &filetype == 'mkd' 90 call setline(1," ") 91 else 92 call setline(1, "/*************************************************************************") 93 call append(line("."), " > File Name: ".expand("%")) 94 call append(line(".")+1, " > Author: ma6174") 95 call append(line(".")+2, " > Mail: ma6174@163.com ") 96 call append(line(".")+3, " > Created Time: ".strftime("%c")) 97 call append(line(".")+4, " ************************************************************************/") 98 call append(line(".")+5, "") 99 endif100 if &filetype == 'cpp'101 call append(line(".")+6, "#include ")102 call append(line(".")+7, "using namespace std;")103 call append(line(".")+8, "")104 endif105 if &filetype == 'c'106 call append(line(".")+6, "#include ")107 call append(line(".")+7, "")108 endif109 " if &filetype == 'java'110 " call append(line(".")+6,"public class ".expand("%"))111 " call append(line(".")+7,"")112 " endif113 "新建文件后,自动定位到文件末尾114 autocmd BufNewFile * normal G115 endfunc 116 117 118 119 120 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""121 "键盘命令122 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""123 :nmap :Tlist 124 map ggVGY125 map! ggVGY126 map gg=G127 " 选中状态下 Ctrl+c 复制128 vmap "+y129 "去空行 130 nnoremap :g/^\s*$/d 131 "比较文件 132 nnoremap :vert diffsplit 133 "列出当前目录文件 134 map :tabnew . 135 "打开树状文件目录 136 map \be 137 "C,C++ 按F5编译运行138 map :call CompileRunGcc() 139 func! CompileRunGcc()140 exec "w"141 if &filetype == 'c'142 exec "!g++ % -o %<"143 exec "! ./%<"144 elseif &filetype == 'cpp'145 exec "!g++ % -o %<"146 exec "! ./%<"147 elseif &filetype == 'java' 148 exec "!javac %" 149 exec "!java %<"150 elseif &filetype == 'sh'151 :!./%152 elseif &filetype == 'python'153 exec "!python %"154 elseif &filetype == 'mkd'155 " exec "!touch ~/temp.html"156 " exec "!perl ~/.vim/markdown.pl % > /tmp/temp.html<" 157 " exec "!markdown % > /tmp/temp.html<" 158 " exec "md"159 exec "!firefox /tmp/markdown.html &"160 endif161 endfunc162 "C,C++的调试163 map :call Rungdb() 164 func! Rungdb()165 exec "w"166 exec "!g++ % -g -o %<"167 exec "!gdb ./%<"168 endfunc169 170 171 172 173 174 175 176 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""177 ""实用设置178 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""179 if has("autocmd")180 autocmd BufReadPost *181 \ if line("'\"") > 0 && line("'\"") <= line("$") |182 \ exe "normal g`\"" |183 \ endif184 endif185 186 " 设置当文件被改动时自动载入187 set autoread188 " quickfix模式189 autocmd FileType c,cpp map :w :make 190 "代码补全 191 set completeopt=preview,menu 192 "允许插件 193 filetype plugin on194 "共享剪贴板 195 "set clipboard+=unnamed 196 "自动保存197 set autowrite198 set ruler " 打开状态栏标尺199 set cursorline " 突出显示当前行200 set magic " 设置魔术201 set guioptions-=T " 隐藏工具栏202 set guioptions-=m " 隐藏菜单栏203 set foldcolumn=0204 set foldmethod=indent 205 set foldlevel=3 206 " 不要使用vi的键盘模式,而是vim自己的207 set nocompatible208 " 去掉输入错误的提示声音209 set noeb210 " 在处理未保存或只读文件的时候,弹出确认211 set confirm212 "禁止生成临时文件213 set nobackup214 set noswapfile215 "搜索忽略大小写216 set ignorecase217 218 219 220 221 set linespace=0222 " 增强模式中的命令行自动完成操作223 set wildmenu224 " 使回格键(backspace)正常处理indent, eol, start等225 set backspace=2226 " 允许backspace和光标键跨越行边界227 set whichwrap+=<,>,h,l228 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)229 set mouse=a230 set selection=exclusive231 set selectmode=mouse,key232 " 通过使用: commands命令,告诉我们文件的哪一行被改变过233 set report=0234 " 在被分割的窗口间显示空白,便于阅读235 set fillchars=vert:\ ,stl:\ ,stlnc:\236 " 高亮显示匹配的括号237 set showmatch238 " 匹配括号高亮的时间(单位是十分之一秒)239 set matchtime=1240 " 光标移动到buffer的顶部和底部时保持3行距离241 set scrolloff=3242 " 为C程序提供自动缩进243 set smartindent244 " 高亮显示普通txt文件(需要txt.vim脚本)245 au BufRead,BufNewFile * setfiletype txt246 "自动补全247 :inoremap ( () i248 :inoremap ) =ClosePair(')') 249 ":inoremap { { } O250 ":inoremap } =ClosePair('}') 251 :inoremap [ [] i252 :inoremap ] =ClosePair(']') 253 :inoremap " "" i254 :inoremap ' '' i255 function! ClosePair(char)256 if getline('.')[col('.') - 1] == a:char257 return "\ "258 else259 return a:char260 endif261 endfunction262 filetype plugin indent on 263 "打开文件类型检测, 加了这句才可以用智能补全264 set completeopt=longest,menu265 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""266 " CTags的设定 267 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""268 let Tlist_Sort_Type = "name" " 按照名称排序 269 let Tlist_Use_Right_Window = 1 " 在右侧显示窗口 270 let Tlist_Compart_Format = 1 " 压缩方式 271 let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer 272 let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags 273 let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树 274 "let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的275 "设置tags 276 "set tags=tags 277 "set autochdir 278 279 280 281 282 283 284 285 286 287 288 289 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""290 "其他东东291 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""292 "默认打开Taglist 293 let Tlist_Auto_Open=1 294 """""""""""""""""""""""""""""" 295 " Tag list (ctags) 296 """""""""""""""""""""""""""""""" 297 let Tlist_Ctags_Cmd = '/usr/local/bin/ctags' 298 let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 299 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim 300 let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口301 " minibufexpl插件的一般设置302 let g:miniBufExplMapWindowNavVim = 1303 let g:miniBufExplMapWindowNavArrows = 1304 let g:miniBufExplMapCTabSwitchBufs = 1305 let g:miniBufExplModSelTarget = 1 306 307 308 309 310 311 312 313 314 315 316 317 318 "输入法319 :let g:vimim_map='c-/'320 :let g:vimim_cloud='qq' " QQ云输入321 :let g:vimim_punctuation=0 " 不用中文标点322 :set pastetoggle= 323 324 325 "python补全326 let g:pydiction_location = '~/.vim/after/complete-dict'327 let g:pydiction_menu_height = 20328 let Tlist_Ctags_Cmd='/usr/local/bin/ctags'329 let g:miniBufExplMapWindowNavVim = 1330 let g:miniBufExplMapWindowNavArrows = 1331 let g:miniBufExplMapCTabSwitchBufs = 1332 let g:miniBufExplModSelTarget = 1333 334 335 336 337 set iskeyword+=.338 set fileencodings=utf-8339 set termencoding=utf-8340 set encoding=utf8341 set fileencoding=utf8342 set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030343 let &termencoding=&encoding344 345 346 347 autocmd FileType python set omnifunc=pythoncomplete#Complete