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 <CR><CR> 64 nmap fi :!firefox %.html & <CR><CR> 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,"<head><meta charset=\"UTF-8\"></head>") 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 endif 100 if &filetype == 'cpp' 101 call append(line(".")+6, "#include<iostream>") 102 call append(line(".")+7, "using namespace std;") 103 call append(line(".")+8, "") 104 endif 105 if &filetype == 'c' 106 call append(line(".")+6, "#include<stdio.h>") 107 call append(line(".")+7, "") 108 endif 109 " if &filetype == 'java' 110 " call append(line(".")+6,"public class ".expand("%")) 111 " call append(line(".")+7,"") 112 " endif 113 "新建文件后,自动定位到文件末尾 114 autocmd BufNewFile * normal G 115 endfunc 116 117 118 119 120 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 121 "键盘命令 122 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 123 :nmap <silent> <F9> <ESC>:Tlist<RETURN> 124 map <C-A> ggVGY 125 map! <C-A> <Esc>ggVGY 126 map <F12> gg=G 127 " 选中状态下 Ctrl+c 复制 128 vmap <C-c> "+y 129 "去空行 130 nnoremap <F2> :g/^\s*$/d<CR> 131 "比较文件 132 nnoremap <C-F2> :vert diffsplit 133 "列出当前目录文件 134 map <F3> :tabnew .<CR> 135 "打开树状文件目录 136 map <C-F3> \be 137 "C,C++ 按F5编译运行 138 map <F5> :call CompileRunGcc()<CR> 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<"<CR> 157 " exec "!markdown % > /tmp/temp.html<"<CR> 158 " exec "md" 159 exec "!firefox /tmp/markdown.html &" 160 endif 161 endfunc 162 "C,C++的调试 163 map <F8> :call Rungdb()<CR> 164 func! Rungdb() 165 exec "w" 166 exec "!g++ % -g -o %<" 167 exec "!gdb ./%<" 168 endfunc 169 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 \ endif 184 endif 185 186 " 设置当文件被改动时自动载入 187 set autoread 188 " quickfix模式 189 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr> 190 "代码补全 191 set completeopt=preview,menu 192 "允许插件 193 filetype plugin on 194 "共享剪贴板 195 "set clipboard+=unnamed 196 "自动保存 197 set autowrite 198 set ruler " 打开状态栏标尺 199 set cursorline " 突出显示当前行 200 set magic " 设置魔术 201 set guioptions-=T " 隐藏工具栏 202 set guioptions-=m " 隐藏菜单栏 203 set foldcolumn=0 204 set foldmethod=indent 205 set foldlevel=3 206 " 不要使用vi的键盘模式,而是vim自己的 207 set nocompatible 208 " 去掉输入错误的提示声音 209 set noeb 210 " 在处理未保存或只读文件的时候,弹出确认 211 set confirm 212 "禁止生成临时文件 213 set nobackup 214 set noswapfile 215 "搜索忽略大小写 216 set ignorecase 217 218 219 220 221 set linespace=0 222 " 增强模式中的命令行自动完成操作 223 set wildmenu 224 " 使回格键(backspace)正常处理indent, eol, start等 225 set backspace=2 226 " 允许backspace和光标键跨越行边界 227 set whichwrap+=<,>,h,l 228 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) 229 set mouse=a 230 set selection=exclusive 231 set selectmode=mouse,key 232 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 233 set report=0 234 " 在被分割的窗口间显示空白,便于阅读 235 set fillchars=vert:\ ,stl:\ ,stlnc:\ 236 " 高亮显示匹配的括号 237 set showmatch 238 " 匹配括号高亮的时间(单位是十分之一秒) 239 set matchtime=1 240 " 光标移动到buffer的顶部和底部时保持3行距离 241 set scrolloff=3 242 " 为C程序提供自动缩进 243 set smartindent 244 " 高亮显示普通txt文件(需要txt.vim脚本) 245 au BufRead,BufNewFile * setfiletype txt 246 "自动补全 247 :inoremap ( ()<ESC>i 248 :inoremap ) <c-r>=ClosePair(')')<CR> 249 ":inoremap { {<CR>}<ESC>O 250 ":inoremap } <c-r>=ClosePair('}')<CR> 251 :inoremap [ []<ESC>i 252 :inoremap ] <c-r>=ClosePair(']')<CR> 253 :inoremap " ""<ESC>i 254 :inoremap ' ''<ESC>i 255 function! ClosePair(char) 256 if getline('.')[col('.') - 1] == a:char 257 return "\<Right>" 258 else 259 return a:char 260 endif 261 endfunction 262 filetype plugin indent on 263 "打开文件类型检测, 加了这句才可以用智能补全 264 set completeopt=longest,menu 265 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 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 = 1 303 let g:miniBufExplMapWindowNavArrows = 1 304 let g:miniBufExplMapCTabSwitchBufs = 1 305 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=<C-H> 323 324 325 "python补全 326 let g:pydiction_location = '~/.vim/after/complete-dict' 327 let g:pydiction_menu_height = 20 328 let Tlist_Ctags_Cmd='/usr/local/bin/ctags' 329 let g:miniBufExplMapWindowNavVim = 1 330 let g:miniBufExplMapWindowNavArrows = 1 331 let g:miniBufExplMapCTabSwitchBufs = 1 332 let g:miniBufExplModSelTarget = 1 333 334 335 336 337 set iskeyword+=. 338 set fileencodings=utf-8 339 set termencoding=utf-8 340 set encoding=utf8 341 set fileencoding=utf8 342 set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030 343 let &termencoding=&encoding 344 345 346 347 autocmd FileType python set omnifunc=pythoncomplete#Complete
转载于:https://www.cnblogs.com/myNameis/archive/2012/08/13/2637075.html