vim配置
来源:互联网 发布:淘宝怎么进自己店铺 编辑:程序博客网 时间:2024/05/30 07:13
001let mapleader = ";" " 比较习惯用;作为命令前缀,右手小拇指直接能按到
002
" 把空格键映射成:
003
nmap <space> :
004
005
" 快捷打开编辑vimrc文件的键盘绑定
006
map <silent> <leader>ee :e $HOME/.vimrc<cr>
007
autocmd! bufwritepost *.vimrc source $HOME/.vimrc
008
009
" ^z快速进入shell
010
nmap <C-Z> :shell<cr>
011
inoremap <leader>n <esc>
012
013
" 判断操作系统
014
if (has("win32") || has("win64") || has("win32unix"))
015
let g:isWin = 1
016
else
017
let g:isWin = 0
018
endif
019
020
" 判断是终端还是gvim
021
if has("gui_running")
022
let g:isGUI = 1
023
else
024
let g:isGUI = 0
025
endif
026
027
set nocompatible " 关闭兼容模式
028
syntax enable " 语法高亮
029
filetype plugin on " 文件类型插件
030
filetype indent on
031
set shortmess=atI " 去掉欢迎界面
032
set autoindent
033
autocmd BufEnter * :syntax sync fromstart
034
set nu " 显示行号
035
set showcmd " 显示命令
036
set lz " 当运行宏时,在命令执行完成之前,不重绘屏幕
037
set hid " 可以在没有保存的情况下切换buffer
set encoding=utf8set fileencodings=utf8,gbk,gb2312 设置字符
038
set backspace=eol,start,indent
039
set whichwrap+=<,>,h,l " 退格键和方向键可以换行
040
set incsearch " 增量式搜索
041
set nohlsearch
042
"set hlsearch " 高亮搜索
043
set ignorecase " 搜索时忽略大小写
044
set magic " 额,自己:h magic吧,一行很难解释
045
set showmatch " 显示匹配的括号
046
set nobackup " 关闭备份
047
set nowb
048
set noswapfile " 不使用swp文件,注意,错误退出后无法恢复
049
set lbr " 在breakat字符处而不是最后一个字符处断行
050
set ai " 自动缩进
051
set si " 智能缩进
052
set cindent " C/C++风格缩进
053
set wildmenu
054
set nofen
055
set fdl=10
056
057
" tab转化为4个字符
058
set expandtab
059
set smarttab
060
set shiftwidth=4
061
set tabstop=4
062
063
" 不使用beep或flash
064
set vb t_vb=
065
066
set background=dark
067
set t_Co=256
068
colorscheme xoria256
069
070
set history=400 " vim记住的历史操作的数量,默认的是20
071
set autoread " 当文件在外部被修改时,自动重新读取
072
set mouse=n " 在所有模式下都允许使用鼠标,还可以是n,v,i,c等
073
074
"在gvim中高亮当前行
075
if (g:isGUI)
076
set cursorline
077
colorscheme wombat
078
hi cursorline guibg=#333333
079
hi CursorColumn guibg=#333333
080
"set guifont=Consolas\ 10
081
"set guifontwide=Consolas\ 10
082
set guifont=DejaVu\ Sans\ Mono\ 10
083
set gfw=DejaVu\ Sans\ Mono\ 10
084
" 不显示toolbar
085
set guioptions-=T
086
" 不显示菜单栏
087
"set guioptions-=m
088
endif
089
090
" 设置字符集编码,默认使用utf8
091
if (g:isWin)
092
let &termencoding=&encoding " 通常win下的encoding为cp936
093
set fileencodings=utf8,cp936,ucs-bom,latin1
094
else
095
set encoding=utf8
096
set fileencodings=utf8,gb2312,gb18030,ucs-bom,latin1
097
endif
098
099
" 状态栏
100
set laststatus=2 " 总是显示状态栏
101
highlight StatusLine cterm=bold ctermfg=yellow ctermbg=blue
102
" 获取当前路径,将$HOME转化为~
103
function! CurDir()
104
let curdir = substitute(getcwd(), $HOME, "~", "g")
105
return curdir
106
endfunction
107
set statusline=[%n]\ %f%m%r%h\ \|\ \ pwd:\ %{CurDir()}\ \ \|%=\|\ %l,%c\ %p%%\ \|\ ascii=%b,hex=%b%{((&fenc==\"\")?\"\":\"\ \|\ \".&fenc)}\ \|\ %{$USER}\ @\ %{hostname()}\
108
109
" 第80列往后加下划线
110
"au BufWinEnter * let w:m2=matchadd('Underlined', '\%>' . 80 . 'v.\+', -1)
111
112
" 根据给定方向搜索当前光标下的单词,结合下面两个绑定使用
113
function! VisualSearch(direction) range
114
let l:saved_reg = @"
115
execute "normal! vgvy"
116
let l:pattern = escape(@", '\\/.*$^~[]')
117
let l:pattern = substitute(l:pattern, "\n$", "", "")
118
if a:direction == 'b'
119
execute "normal ?" . l:pattern . "<cr>"
120
else
121
execute "normal /" . l:pattern . "<cr>"
122
endif
123
let @/ = l:pattern
124
let @" = l:saved_reg
125
endfunction
126
" 用 */# 向 前/后 搜索光标下的单词
127
vnoremap <silent> * :call VisualSearch('f')<CR>
128
vnoremap <silent> # :call VisualSearch('b')<CR>
129
130
" 在文件名上按gf时,在新的tab中打开
131
"map gf :tabnew <cfile><cr>
132
133
" 用c-j,k在buffer之间切换
134
nn <C-J> :bn<cr>
135
nn <C-K> :bp<cr>
136
137
" Bash(Emacs)风格键盘绑定
138
imap <C-e> <END>
139
imap <C-a> <HOME>
140
"imap <C-u> <esc>d0i
141
"imap <C-k> <esc>d$i " 与自动补全中的绑定冲突
142
143
"从系统剪切板中复制,剪切,粘贴
144
map <F7> "+y
145
map <F8> "+x
146
map <F9> "+p
147
148
" 恢复上次文件打开位置
149
set viminfo='10,\"100,:20,%,n~/.viminfo
150
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
151
152
" 删除buffer时不关闭窗口
153
command! Bclose call <SID>BufcloseCloseIt()
154
function! <SID>BufcloseCloseIt()
155
let l:currentBufNum = bufnr("%")
156
let l:alternateBufNum = bufnr("#")
157
158
if buflisted(l:alternateBufNum)
159
buffer #
160
else
161
bnext
162
endif
163
164
if bufnr("%") == l:currentBufNum
165
new
166
endif
167
168
if buflisted(l:currentBufNum)
169
execute("bdelete! ".l:currentBufNum)
170
endif
171
endfunction
172
173
174
" 快捷输入
175
" 自动完成括号和引号
176
inoremap <leader>1 ()<esc>:let leavechar=")"<cr>i
177
inoremap <leader>2 []<esc>:let leavechar="]"<cr>i
178
inoremap <leader>3 {}<esc>:let leavechar="}"<cr>i
179
inoremap <leader>4 {<esc>o}<esc>:let leavechar="}"<cr>O
180
inoremap <leader>q ''<esc>:let leavechar="'"<cr>i
181
inoremap <leader>w ""<esc>:let leavechar='"'<cr>i
182
183
184
" 插件窗口的宽度,如TagList,NERD_tree等,自己设置
185
let s:PlugWinSize = 25
186
187
" taglist.vim
188
" http://www.vim.org/scripts/script.php?script_id=273
189
" <leader>t 打开TagList窗口,窗口在右边
190
nmap <silent> <leader>t :TlistToggle<cr>
191
"let Tlist_Ctags_Cmd = '/usr/bin/ctags'
192
let Tlist_Show_One_File = 0
193
let Tlist_Exit_OnlyWindow = 1
194
let Tlist_Use_Right_Window = 1
195
let Tlist_File_Fold_Auto_Close = 1
196
let Tlist_GainFocus_On_ToggleOpen = 0
197
let Tlist_WinWidth = s:PlugWinSize
198
let Tlist_Auto_Open = 0
199
let Tlist_Display_Prototype = 0
200
"let Tlist_Close_On_Select = 1
201
202
203
" OmniCppComplete.vim
204
" http://www.vim.org/scripts/script.php?script_id=1520
205
set completeopt=menu
206
let OmniCpp_ShowPrototypeInAbbr = 1
207
let OmniCpp_DefaultNamespaces = ["std"] " 逗号分割的字符串
208
let OmniCpp_MayCompleteScope = 1
209
let OmniCpp_ShowPrototypeInAbbr = 0
210
let OmniCpp_SelectFirstItem = 2
211
" c-j自动补全,当补全菜单打开时,c-j,k上下选择
212
imap <expr> <c-j> pumvisible()?"\<C-N>":"\<C-X><C-O>"
213
imap <expr> <c-k> pumvisible()?"\<C-P>":"\<esc>"
214
" f:文件名补全,l:行补全,d:字典补全,]:tag补全
215
imap <C-]> <C-X><C-]>
216
imap <C-F> <C-X><C-F>
217
imap <C-D> <C-X><C-D>
218
imap <C-L> <C-X><C-L>
219
220
" NERD_commenter.vim
221
" http://www.vim.org/scripts/script.php?script_id=1218
222
" Toggle单行注释/“性感”注释/注释到行尾/取消注释
223
map <leader>cc ,c<space>
224
map <leader>cs ,cs
225
map <leader>c$ ,c$
226
map <leader>cu ,cu
227
228
" NERD tree
229
" http://www.vim.org/scripts/script.php?script_id=1658
230
let NERDTreeShowHidden = 1
231
let NERDTreeWinPos = "left"
232
let NERDTreeWinSize = s:PlugWinSize
233
nmap <leader>n :NERDTreeToggle<cr>
234
235
" DoxygenToolkit.vim
236
" http://www.vim.org/scripts/script.php?script_id=987
237
" 暂时没有使用
238
239
" 更新ctags和cscope索引
240
" href: http://www.vimer.cn/2009/10/把vim打造成一个真正的ide2.html
241
" 稍作修改,提取出DeleteFile函数,修改ctags和cscope执行命令
242
map <F6> :call Do_CsTag()<cr>
243
function! Do_CsTag()
244
let dir = getcwd()
245
246
"先删除已有的tags和cscope文件,如果存在且无法删除,则报错。
247
if ( DeleteFile(dir, "tags") )
248
return
249
endif
250
if ( DeleteFile(dir, "cscope.files") )
251
return
252
endif
253
if ( DeleteFile(dir, "cscope.out") )
254
return
255
endif
256
257
if(executable('ctags'))
258
silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."
259
endif
260
if(executable('cscope') && has("cscope") )
261
if(g:isWin)
262
silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"
263
else
264
silent! execute "!find . -iname '*.[ch]' -o -name '*.cpp' > cscope.files"
265
endif
266
silent! execute "!cscope -b"
267
execute "normal :"
268
if filereadable("cscope.out")
269
execute "cs add cscope.out"
270
endif
271
endif
272
" 刷新屏幕
273
execute "redr!"
274
endfunction
275
276
function! DeleteFile(dir, filename)
277
if filereadable(a:filename)
278
if (g:isWin)
279
let ret = delete(a:dir."\\".a:filename)
280
else
281
let ret = delete("./".a:filename)
282
endif
283
if (ret != 0)
284
echohl WarningMsg | echo "Failed to delete ".a:filename | echohl None
285
return 1
286
else
287
return 0
288
endif
289
endif
290
return 0
291
endfunction
292
293
" cscope 绑定
294
if has("cscope")
295
set csto=1
296
set cst
297
set nocsverb
298
if filereadable("cscope.out")
299
cs add cscope.out
300
endif
301
set csverb
302
" s: C语言符号 g: 定义 d: 这个函数调用的函数 c: 调用这个函数的函数
303
" t: 文本 e: egrep模式 f: 文件 i: include本文件的文件
304
nmap <leader>ss :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<CR>
305
nmap <leader>sg :cs find g <C-R>=expand("<cword>")<CR><CR>
306
nmap <leader>sc :cs find c <C-R>=expand("<cword>")<CR><CR>:copen<CR>
307
nmap <leader>st :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>
308
nmap <leader>se :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>
309
nmap <leader>sf :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>
310
nmap <leader>si :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:copen<CR>
311
nmap <leader>sd :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>
312
endif
313
314
" Quick Fix 设置
315
map <F3> :cw<cr>
316
map <F4> :cp<cr>
317
map <F5> :cn<cr>
318
319
" Buffers Explorer (需要genutils.vim)
320
" http://vim.sourceforge.net/scripts/script.php?script_id=42
321
" http://www.vim.org/scripts/script.php?script_id=197
322
let g:bufExplorerDefaultHelp=0 " Do not show default help.
323
let g:bufExplorerShowRelativePath=1 " Show relative paths.
324
let g:bufExplorerSortBy='mru' " Sort by most recently used.
325
let g:bufExplorerSplitRight=0 " Split left.
326
let g:bufExplorerSplitVertical=1 " Split vertically.
327
let g:bufExplorerSplitVertSize = s:PlugWinSize " Split width
328
let g:bufExplorerUseCurrentWindow=1 " Open in new window.
329
autocmd BufWinEnter \[Buf\ List\] setl nonumber
330
nmap <silent> <Leader>b :BufExplorer<CR>
331
332
" Vimwiki配置
333
let g:vimwiki_list = [{'path': '~/Dropbox/MyWiki/my_site/',
334
\ 'path-html': '~/Dropbox/MyWiki/my_site_html/',
335
\ 'html-header': '~/Dropbox/MyWiki/templates/header.tpl',
336
\ 'html-footer': '~/Dropbox/MyWiki/templates/footer.tpl'}]
337
let g:vimwiki_camel_case=0
338
339
let wiki = {}
340
let wiki.path = '~/Dropbox/MyWiki/my_site/'
341
let wiki.nested_syntaxes = {'python': 'python', 'c++': 'cpp'}
342
let g:vimwiki_list = [wiki]
343
344
"pythoncomplete配置
345
autocmd filetype python set omnifunc=pythoncomplete#Complete
- vim配置NERD_tree.vim
- [Linux][Vim]:vim 配置
- vim配置NERD_tree.vim
- vim 配置vim
- vim 配置
- vim 配置
- vim配置
- vim 配置
- vim 配置
- vim 配置
- vim 配置
- vim配置
- vim配置
- VIM 配置
- vim 配置
- vim 配置
- VIM配置
- vim配置
- java流读取及标签的制作
- 给中国学生的第三封信:成功、自信、快乐
- 如何在vmware虚拟机下挂载windows硬盘
- java动态代理(JDK和cglib)
- 第八周实验报告1.3
- vim配置
- 递归方法读取数据库中的数据,添加到TreeView中
- 蓄水池抽样的原理
- Ubuntu(Linux)/Windows下反编译apk
- [转] (转)六世达赖喇嘛 仓央嘉措的绝美“情诗”
- 概率相关的题目
- jboss7.1.1配置mysql数据源
- poj 1926 Pollution
- 如何在asp.net中实现listbox item值上下移动?(转)