您的位置:首页 > 其它

一个.vimrc的示例

2015-07-31 11:37 435 查看
1 filetype off
  2 
  3 " 生成每个插件的帮助标签文件 tags
  4 " 使用pathogen管理插件目录
  5 call pathogen#runtime_append_all_bundles()
  6 "call pathogen#helptags()
  7 
  8 " 设置 Vim 内部使用的字符编码
  9 set encoding=utf-8
 10 set fileencoding=utf-8
 11 set fileencodings=utf-8,chinese,ucs-bom
 12 set termencoding=utf-8
 13 set nobomb
 14 
 15 "------------------------------------------------------------------------------
 16 " 环境相关配置
 17 "------------------------------------------------------------------------------
 18 
 19 " Windows环境
 20 if has('win32') && has('gui_win32') && has('gui_running')
 21 
 22     " 配置文件变量
 23     let g:my_vimrc = $HOME.'\vimfiles\vimrc'
 24     let g:vimrc_home = $HOME.'\vimfiles'
 25 
 26     " 设置语言为英语
 27     lang english
 28 
 29     " 改变当前工作目录为“桌面”
 30     cd $HOME/桌面
 31     " 设置英文字体
 32     set guifont=Bitstream_Vera_Sans_Mono:h10.5:cANSI
 33     " 设置中文字体
 34     set guifontwide=Yahei_Mono:h10.5:cANSI
 35     " 启动时最大化窗口
 36     autocmd GUIEnter * simalt ~x
 37 
 38     " 高亮光标所在的屏幕行
 39     set cursorline
 40 
 41     " 使用CTRL-X,CTRL-C 和 CTRL-V 这些标准的 MS-Windows 操作方式
 42     source $VIMRUNTIME/mswin.vim
 43 
 44 " Linux环境
 45 elseif has('unix')
 46 
 47     " 配置文件变量
 48     let g:my_vimrc = $HOME.'/.vim/vimrc'
 49     let g:vimrc_home = $HOME.'/.vim'
 50 
 51     " 不高亮光标所在的屏幕行
 52     set nocursorline
 53 endif
 54 
 55 "------------------------------------------------------------------------------
 56 " 自动命令
 57 "------------------------------------------------------------------------------
 58 
 59 " 保存配置文件时自动重新载入配置
 60 autocmd! BufWritePost vimrc exec 'source '.g:my_vimrc
 61 
 62 " VIM失去焦点时自动保存所有文件
 63 "autocmd FocusLost * :wa
 64 
 65 "------------------------------------------------------------------------------
 66 " 选项设置
 67 "------------------------------------------------------------------------------
 68 
 69 " 不兼容vi
 70 set nocompatible
 71 " 备份文件存放目录
 72 exec 'set backupdir='.fnameescape(g:vimrc_home.'/.vim_backup/')
 73 "" swap文件存放目录
 74 exec 'set directory='.fnameescape(g:vimrc_home.'/.vim_swap//')
 75 "" 持久撤销文件存放目录
 76 exec 'set undodir='.fnameescape(g:vimrc_home.'/.vim_undo/')
 77 " 覆盖文件前不创建一个备份
 78 set backup
 79 " 持久撤销功能
 80 set undofile
 81 " 显示折叠列
 82 set foldcolumn=3
 83 " 在窗口里开始编辑一个缓冲区时设置 'foldlevel'。用于开始编辑时总是关闭所有的折叠 (值为零),关闭某些折叠 (1) 或者没有折叠 (99)。
 84 set foldlevelstart=99
 85 " 设置折叠级别: 高于此级别的折叠会被关闭
 86 set foldlevel=99
 87 " 文件里的 <Tab> 代表的空格数
 88 set tabstop=4
 89 " (自动) 缩进每一步使用的空白数目
 90 set shiftwidth=4
 91 " 执行编辑操作,如插入 <Tab> 或者使用 <BS> 时,把 <Tab> 算作空格的数目
 92 set softtabstop=4
 93 " 不用空格展开<Tab>
 94 set noexpandtab
 95 " 光标上下两侧最少保留的屏幕行数
 96 set scrolloff=5
 97 " 如果设置 'nowrap',光标左右两侧保留的最少屏幕列数
 98 set sidescrolloff=5
 99 " 水平滚动时滚动的最少列数
100 set sidescroll=1
101 " 开启新行时 (插入模式下输入 <cr>,或者使用 "o" 或 "O" 命令),从当前行复制缩进距离
102 set autoindent
103 " 在插入、替换和可视模式里,在最后一行提供消息
104 set showmode
105 " 在屏幕最后一行显示 (部分的) 命令
106 set showcmd
107 " 放弃时隐藏缓冲区
108 set hidden
109 " 'wildmenu' 打开时,命令行补全以增强模式运行
110 set wildmenu
111 " 用 'widechar' 指定的字符所用的补全模式
112 set wildmode=list:longest
113 " 不使用可视响铃
114 set novisualbell
115 " 表明使用的是快速终端连接
116 set ttyfast
117 " 显示光标位置的行号和列号,逗号分隔
118 set ruler
119 " 影响 <BS>、<Del>、CTRL-W 和 CTRL-U 在插入模式下的工作方式
120 set backspace=indent,eol,start
121 " 总是显示状态行
122 set laststatus=2
123 " 在每行前面显示行号
124 set number
125 " 行号使用的最小列数
126 set numberwidth=3
127 " 语法高亮项目指定折叠
128 set foldmethod=syntax
129 " 搜索模式里忽略大小写
130 set ignorecase
131 " 如果搜索模式包含大写字符,不使用 'ignorecase' 选项
132 set smartcase
133 " 如果打开,":substitute" 的 'g' 标志位缺省打开。这意味着所有的行内匹配都被替换,而不是只有一个。
134 set gdefault
135 " 输入搜索命令时,显示目前输入的模式的匹配位置。匹配的字符串被高亮
136 set incsearch
137 " 插入括号时,短暂地跳转到匹配的对应括号
138 set showmatch
139 " 如果有上一个搜索模式,高亮它的所有匹配
140 set hlsearch
141 " 不自动换行
142 set nowrap
143 " 插入文本的最大宽度
144 "set textwidth=80
145 " 描述自动排版如何进行的字母序列
146 set formatoptions+=q
147 set formatoptions+=r
148 set formatoptions+=n
149 set formatoptions+=1
150 "set colorcolumn=+1
151 set list
152 set listchars=tab:>-,trail:-,extends:>,precedes:<
153 set guioptions-=m "删除菜单栏
154 set guioptions-=T "删除工具栏
155 set guioptions-=r "删除右边的滚动条
156 set guioptions-=R "如有垂直分割的窗口,删除右边的滚动条
157 set guioptions-=l "删除左边的滚动条
158 set guioptions-=L "如有垂直分割的窗口,删除左边的滚动条
159 " 关键字补全,扫描 'dictionary' 选项给出的文件
160 set complete+=k
161 " ":" 命令的历史和最近的搜索模式的历史会被记住。本选项决定每个历史分别记住多少项 (见 |cmdline-editing|)。
162 set history=1000
163 " 文件名补全时忽略.svn
164 set wildignore+=*.svn
165 " 窗口的分割会把新窗口放到当前窗口之下
166 set nosplitbelow
167 " 窗口的分割会把新窗口放到当前窗口之右
168 set nosplitright
169 " 状态栏
170 set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)
171 " 设为 "dark" 时,Vim 试图使用深色背景上看起来舒服的颜色
172 set background=dark
173 " 在可视模式下可以选择一个方块
174 set virtualedit+=block
175 " 如果发现文件在 Vim 之外修改过而在 Vim 里面没有的话,自动重新读入。
176 set autoread
177 " 命令行使用的屏幕行数
178 set cmdheight=1
179 " 设置<EOL>格式
180 set fileformat=unix
181 " 设置<EOL>格式
182 set fileformats=unix,dos
183 
184 "------------------------------------------------------------------------------
185 " Learder键映射
186 "------------------------------------------------------------------------------
187 
188 " 要定义一个使用 "mapleader" 变量的映射,可以使用特殊字串 "<Leader>"
189 let mapleader = ","
190 " <LocalLeader> 和 <Leader> 类似,除了它使用 "maplocalleader" 而非 "mapleader"以外
191 let maplocalleader = "\\"
192 
193 " ,e 垂直分割,窗口快速编辑VIM配置文件
194 nnoremap <leader>e <C-w><C-v><C-l>:exec 'e! '.g:my_vimrc<cr>
195 
196 " ,<cr> 取消高亮
197 nnoremap <leader><cr> :nohlsearch<cr>
198 
199 " ,l 关闭Tab,行尾空格的显示
200 nnoremap <leader>l :set list!<cr>
201 
202 " ,w 保存文件
203 nnoremap <leader>w :w<cr>
204 
205 " ,q 退出
206 nnoremap <leader>q :q<cr>
207 
208 " ,W 删除所有的行尾的空格
209 nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<cr>
210 
211 " ,a Ack插件快捷键
212 nnoremap <leader>a :Ack
213 
214 " ,v 重选刚粘贴的文本,以便进行其他操作(如缩进)
215 nnoremap <leader>v gv
216 
217 " 垂直分割窗口,并切换过去
218 nnoremap <leader>s <C-w>v<C-w>l
219 
220 " ,r 同步文件到体验环境
221 
222 nnoremap <leader>r :!./my_sync.sh<cr><cr>
223 
224 " ,e 垂直分割,窗口快速编辑VIM配置文件
225 nnoremap <leader>R <C-w><C-v><C-l>:e! ./my_sync.sh<cr>
226 
227 " Grep插件
228 nnoremap <leader>sp :Grep<cr>
229 
230 "设置快捷键将选中文本块复制至系统剪贴板
231 vnoremap <leader>y "+y
232 
233 "设置快捷键将系统剪贴板内容粘贴至Vim
234 "nnoremap <Leader>p "+p
235 
236 nnoremap <Leader>n :cn<cr>
237 nnoremap <Leader>p :cp<cr>
238 
239 "------------------------------------------------------------------------------
240 " 功能键映射
241 "------------------------------------------------------------------------------
242 
243 map <F1> :NERDTreeToggle<cr>
244 
245 " 防止想按Esc时不小心按到了F1
246 inoremap <F1> <ESC>
247 vnoremap <F1> <ESC>
248 
249 " 切换MiniBufExplorer的显示
250 nnoremap <F2> :TMiniBufExplorer<CR>
251 
252 " 切换到MiniBufExplorer
253 nnoremap <F3> :MiniBufExplorer<CR>
254 
255 " 切换TagList的显示
256 nnoremap <F4> :TlistToggle<CR>
257 
258 " 打开URL/文件/目录/电子邮件地址
259 inoremap <F6> <C-o>:Open<CR>
260 nnoremap <F6> :Open<CR>
261 
262 " 切换粘贴模式
263 nnoremap <F8> :set invpaste paste?<CR>
264 inoremap <F8> <esc>:set invpaste paste?<CR>a
265 
266 " 切换Yank Ring的显示
267 nnoremap <silent> <F10> :YRShow<cr>
268 inoremap <silent> <F10> <ESC>:YRShow<cr>
269 
270 " 全屏
271 inoremap <F11> <C-o>:Fullscreen<CR>
272 nnoremap <F11> :Fullscreen<CR>
273 
274 " 在.cpp/.c和.h文件间切换
275 nnoremap <F12> <Esc>:A<CR>
276 
277 "------------------------------------------------------------------------------
278 " 其他键映射
279 "------------------------------------------------------------------------------
280 
281 " 使用 "\v" 会使得其后的模式中所有 '0'-'9','a'-'z','A'-'Z' 和 '_' 之外的字符都当作特殊字符解释
282 nnoremap / /\v
283 vnoremap / /\v
284 " 用Tab跳转到匹配的括号
285 map <tab> %
286 
287 " 自动换行时可在行中移动
288 nnoremap j gj
289 nnoremap k gk
290 
291 " ;号等同于:号
292 nnoremap ; :
293 
294 " 用jj代替ESC
295 inoremap jj <ESC>
296 
297 " 在分割的窗口间移动
298 nnoremap <C-h> <C-w>h
299 nnoremap <C-j> <C-w>j
300 nnoremap <C-k> <C-w>k
301 nnoremap <C-l> <C-w>l
302 
303 " phpDocumentor for Vim
304 inoremap <C-P> <ESC>:call PhpDocSingle()<CR>i
305 nnoremap <C-P> :call PhpDocSingle()<CR>
306 vnoremap <C-P> :call PhpDocRange()<CR> 
307 
308 " 在buffer间移动
309 noremap <S-h> :bp<cr>
310 noremap <S-l> :bn<cr>
311 
312 " 增减窗口尺寸
313 map + <C-w>+
314 map _ <C-w>-
315 
316 " 用<tab>缩进
317 "nmap <tab>   >>
318 "nmap <s-tab> <<
319 "vmap <tab>   >
320 "vmap <s-tab> <
321 
322 "------------------------------------------------------------------------------
323 " 插件设置
324 "------------------------------------------------------------------------------
325 
326 " taglist
327 let Tlist_Auto_Open = 0
328 let Tlist_Auto_Update = 1
329 let Tlist_Hightlight_Tag_On_BufEnter = 1
330 let Tlist_Show_One_File = 1    " 只显示当前文件
331 let Tlist_Enable_Fold_Column = 0
332 let Tlist_File_Fold_Auto_Close = 0
333 let Tlist_Process_File_Always = 1
334 let Tlist_Display_Prototype = 0
335 let Tlist_Compact_Format = 1
336 let Tlist_Use_Right_Window = 0
337 let Tlist_Exit_OnlyWindow = 1      "如果taglist窗口是最后一个窗口,则退出vim
338 let tlist_php_settings = 'php;c:class;d:constant;f:function' 
339 let Tlist_WinWidth = 30
340 
341 " yankring
342 " 配置yankring历史文件名前缀
343 let g:yankring_history_file = '.yankring_history'
344 
345 " FencView
346 let g:fencview_autodetect = 0
347 let g:fencview_checklines = 30
348 let g:fencview_auto_patterns = '*.*'
349 
350 " Mini Buffer Explorer
351 let g:miniBufExplSplitBelow = 1
352 
353 " delimitMate
354 let loaded_delimitMate = 0
355 let delimitMate_autoclose = 0
356 
357 " shell.vim
358 let g:shell_mappings_enabled = 0
359 
360 "------------------------------------------------------------------------------
361 " 文件类型设置
362 "------------------------------------------------------------------------------
363 
364 " 二进制文件
365 " vim -b : 用xxd格式编辑二进制文件
366 augroup Binary
367     autocmd!
368     autocmd BufReadPre  *.bin,*.o let &bin=1
369     autocmd BufReadPost *.bin,*.o if &bin | %!xxd
370     autocmd BufReadPost *.bin,*.o set ft=xxd | endif
371     autocmd BufWritePre *.bin,*.o if &bin | %!xxd -r
372     autocmd BufWritePre *.bin,*.o endif
373     autocmd BufWritePost *.bin,*.o if &bin | %!xxd
374     autocmd BufWritePost *.bin,*.o set nomod | endif
375 augroup END
376 
377 " Javascript
378 " 折叠
379 function! JavaScriptFold()
380     setl foldmethod=syntax
381     setl foldlevelstart=1
382     syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend
383 
384     function! FoldText()
385         return substitute(getline(v:foldstart), '{.*', '{...}', '')
386     endfunction
387     setl foldtext=FoldText()
388 endfunction
389 autocmd FileType javascript setl fen
390 autocmd FileType javascript call JavaScriptFold()
391 
392 " PHP
393 " 折叠
394 autocmd FileType php EnablePHPFolds
395 
396 "------------------------------------------------------------------------------
397 " 其他设置
398 "------------------------------------------------------------------------------
399 
400 " 打开文件时,自动跳转到光标最后所在的位置
401 if has("autocmd")
402   au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
403     \| exe "normal! g'\"" | endif
404 endif
405 
406 " 切换QuickFix窗口
407 com! -bang -nargs=? QFix cal QFixToggle(<bang>0)
408 fu! QFixToggle(forced)
409     if exists("g:qfix_win") && a:forced == 0 
410         cclose
411         unlet g:qfix_win
412     else 
413         copen 10
414         let g:qfix_win = bufnr("$")
415     en
416 endf
417 nnoremap <leader>f :QFix<cr>
418 
419 " 使用molokai颜色主题
420 colorscheme molokai
421 
422 "打开 ":Man" 命令
423 runtime ftplugin/man.vim
424 
425 " 语法高亮
426 syntax on
427 
428 " 文件类型侦测
429 filetype plugin indent on
430
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: