Linux 配置 vimrc

    由于熟悉了Windows下利用编译器进行编程,所以在刚刚接触Linux后的编程过程中会感觉其vim编译器的各种不方便编写程序,在逐渐的学习过程中了解到可以通过配置vimrc使得vim编译时类似于VS。 

  首先我们需要了解vimrc这个文件:vimrc有两个版本,分别为全局版本和用户版本,通过在vi下命令模式下输入【:version】会看到如下图所示的内容

 

  其中系统vimrc文件是全局版本即系统中的公共版本,对其配置后所有用户下的vim编译器均被配置,用户vimrc文件是存在于每个用户的主目录下的私有配置文件。

  了解这些以后就可以开始配置自己喜欢的vim环境了

切换至root用户然后cd /etc目录下输入ll查看此目录下的vimrc,并通过vim vimrc进入vimrc文件中,可以看到里面的内容如下

ps:为避免配置过程中出错,建议将vimrc文件中的内容备份,如cp vimrc temp.txt

以下是一些我在配置vimrc时选择的配置文件,参考http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html这篇博客,如果你需要其他配置功能可以在网上查找

  1 set nu              " 显示行号  
  2 
  3 set go=             " 不要图形按钮  
  4 
  5 color asmanian2     " 设置背景主题  
  6 
  7 set guifont=Courier_New:h10:cANSI   " 设置字体  
  8 
  9 syntax on           " 语法高亮  
 10 
 11 autocmd InsertLeave * se nocul  " 用浅色高亮当前行  
 12 
 13 autocmd InsertEnter * se cul    " 用浅色高亮当前行  
 14 
 15 set ruler           " 显示标尺  
 16 
 17 set showcmd         " 输入的命令显示出来,看的清楚些  
 18 
 19 set cmdheight=1     " 命令行(在状态行下)的高度,设置为1  
 20 
 21 set scrolloff=3     " 光标移动到buffer的顶部和底部时保持3行距离  
 22 
 23 set novisualbell    " 不要闪烁(不明白)  
 24 
 25 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}   "状态行显示的内容  
 26 
 27 set laststatus=1    " 启动显示状态行(1),总是显示状态行(2)  
 28 
 29 set foldenable      " 允许折叠  
 30 
 31 set foldmethod=manual   " 手动折叠  
 32 
 33 set background=dark "背景使用黑色 
 34 
 35 set nocompatible  "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限  
 36 
 37 " 显示中文帮助
 38 
 39 if version >= 603
 40 
 41     set helplang=cn
 42 
 43     set encoding=utf-8
 44 
 45 endif
 46 
 47 " 设置配色方案
 48 
 49 colorscheme evening
 50 
 51 "字体 
 52 
 53 "if (has("gui_running")) 
 54 
 55 "   set guifont=Bitstream\ Vera\ Sans\ Mono\ 10 
 56 
 57 "endif 
 58 
 59 
 60  
 61 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
 62 
 63 set termencoding=utf-8
 64 
 65 set encoding=utf-8
 66 
 67 set fileencodings=ucs-bom,utf-8,cp936
 68 
 69 set fileencoding=utf-8
 70 
 71 
 72 
 73 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 74 
 75 """""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 76 
 77 "新建.c,.h,.sh,.java文件,自动插入文件头 
 78 
 79 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
 80 
 81 ""定义函数SetTitle,自动插入文件头 
 82 
 83 func SetTitle() 
 84 
 85     "如果文件类型为.sh文件 
 86 
 87     if &filetype == 'sh' 
 88 
 89         call setline(1,"\#########################################################################") 
 90 
 91         call append(line("."), "\# File Name: ".expand("%")) 
 92 
 93         call append(line(".")+1, "\# Author: ma6174") 
 94 
 95         call append(line(".")+2, "\# mail: ma6174@163.com") 
 96 
 97         call append(line(".")+3, "\# Created Time: ".strftime("%c")) 
 98 
 99         call append(line(".")+4, "\#########################################################################") 
100 
101         call append(line(".")+5, "\#!/bin/bash") 
102 
103         call append(line(".")+6, "") 
104 
105     else 
106 
107         call setline(1, "/*************************************************************************") 
108 
109         call append(line("."), "    > File Name: ".expand("%")) 
110 
111         call append(line(".")+1, "    > Author: ma6174") 
112 
113         call append(line(".")+2, "    > Mail: ma6174@163.com ") 
114 
115         call append(line(".")+3, "    > Created Time: ".strftime("%c")) 
116 
117         call append(line(".")+4, " ************************************************************************/") 
118 
119         call append(line(".")+5, "")
120 
121     endif
122 
123     if &filetype == 'cpp'
124 
125         call append(line(".")+6, "#include<iostream>")
126 
127         call append(line(".")+7, "using namespace std;")
128 
129         call append(line(".")+8, "")
130 
131     endif
132 
133     if &filetype == 'c'
134 
135         call append(line(".")+6, "#include<stdio.h>")
136 
137         call append(line(".")+7, "")
138 
139     endif
140 
141     "新建文件后,自动定位到文件末尾
142 
143     autocmd BufNewFile * normal G
144 
145 endfunc 
146 
147 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
148 
149 "键盘命令
150 
151 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
152 
153 
154 
155 nmap <leader>w :w!<cr>
156 
157 nmap <leader>f :find<cr>
158 
159 
160 
161 " 映射全选+复制 ctrl+a
162 
163 map <C-A> ggVGY
164 
165 map! <C-A> <Esc>ggVGY
166 
167 map <F12> gg=G
168 
169 " 选中状态下 Ctrl+c 复制
170 
171 vmap <C-c> "+y
172 
173 "去空行  
174 
175 nnoremap <F2> :g/^\s*$/d<CR> 
176 
177 "比较文件  
178 
179 nnoremap <C-F2> :vert diffsplit 
180 
181 "新建标签  
182 
183 map <M-F2> :tabnew<CR>  
184 
185 "列出当前目录文件  
186 
187 map <F3> :tabnew .<CR>  
188 
189 "打开树状文件目录  
190 
191 map <C-F3> \be  
192 
193 "C,C++ 按F5编译运行
194 
195 map <F5> :call CompileRunGcc()<CR>
196 
197 func! CompileRunGcc()
198 
199     exec "w"
200 
201     if &filetype == 'c'
202 
203         exec "!g++ % -o %<"
204 
205         exec "! ./%<"
206 
207     elseif &filetype == 'cpp'
208 
209         exec "!g++ % -o %<"
210 
211         exec "! ./%<"
212 
213     elseif &filetype == 'java' 
214 
215         exec "!javac %" 
216 
217         exec "!java %<"
218 
219     elseif &filetype == 'sh'
220 
221         :!./%
222 
223     endif
224 
225 endfunc
226 
227 "C,C++的调试
228 
229 map <F8> :call Rungdb()<CR>
230 
231 func! Rungdb()
232 
233     exec "w"
234 
235     exec "!g++ % -g -o %<"
236 
237     exec "!gdb ./%<"
238 
239 endfunc
240 
241 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
242 
243 ""实用设置
244 
245 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
246 
247 " 设置当文件被改动时自动载入
248 
249 set autoread
250 
251 " quickfix模式
252 
253 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
254 
255 "代码补全 
256 
257 set completeopt=preview,menu 
258 
259 "允许插件  
260 
261 filetype plugin on
262 
263 "共享剪贴板  
264 
265 set clipboard+=unnamed 
266 
267 "从不备份  
268 
269 set nobackup
270 
271 "make 运行
272 
273 :set makeprg=g++\ -Wall\ \ %
274 
275 "自动保存
276 
277 set autowrite
278 
279 set ruler                   " 打开状态栏标尺
280 
281 set cursorline              " 突出显示当前行
282 
283 set magic                   " 设置魔术
284 
285 set guioptions-=T           " 隐藏工具栏
286 
287 set guioptions-=m           " 隐藏菜单栏
288 
289 "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
290 
291 " 设置在状态行显示的信息
292 
293 set foldcolumn=0
294 
295 set foldmethod=indent 
296 
297 set foldlevel=3 
298 
299 set foldenable              " 开始折叠
300 
301 " 不要使用vi的键盘模式,而是vim自己的
302 
303 set nocompatible
304 
305 " 语法高亮
306 
307 set syntax=on
308 
309 " 去掉输入错误的提示声音
310 
311 set noeb
312 
313 " 在处理未保存或只读文件的时候,弹出确认
314 
315 set confirm
316 
317 " 自动缩进
318 
319 set autoindent
320 
321 set cindent
322 
323 " Tab键的宽度
324 
325 set tabstop=4
326 
327 " 统一缩进为4
328 
329 set softtabstop=4
330 
331 set shiftwidth=4
332 
333 " 不要用空格代替制表符
334 
335 set noexpandtab
336 
337 " 在行和段开始处使用制表符
338 
339 set smarttab
340 
341 " 显示行号
342 
343 set number
344 
345 " 历史记录数
346 
347 set history=1000
348 
349 "禁止生成临时文件
350 
351 set nobackup
352 
353 set noswapfile
354 
355 "搜索忽略大小写
356 
357 set ignorecase
358 
359 "搜索逐字符高亮
360 
361 set hlsearch
362 
363 set incsearch
364 
365 "行内替换
366 
367 set gdefault
368 
369 "编码设置
370 
371 set enc=utf-8
372 
373 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
374 
375 "语言设置
376 
377 set langmenu=zh_CN.UTF-8
378 
379 set helplang=cn
380 
381 " 我的状态行显示的内容(包括文件类型和解码)
382 
383 "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
384 
385 "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
386 
387 " 总是显示状态行
388 
389 set laststatus=2
390 
391 " 命令行(在状态行下)的高度,默认为1,这里是2
392 
393 set cmdheight=2
394 
395 " 侦测文件类型
396 
397 filetype on
398 
399 " 载入文件类型插件
400 
401 filetype plugin on
402 
403 " 为特定文件类型载入相关缩进文件
404 
405 filetype indent on
406 
407 " 保存全局变量
408 
409 set viminfo+=!
410 
411 " 带有如下符号的单词不要被换行分割
412 
413 set iskeyword+=_,$,@,%,#,-
414 
415 " 字符间插入的像素行数目
416 
417 set linespace=0
418 
419 " 增强模式中的命令行自动完成操作
420 
421 set wildmenu
422 
423 " 使回格键(backspace)正常处理indent, eol, start等
424 
425 set backspace=2
426 
427 " 允许backspace和光标键跨越行边界
428 
429 set whichwrap+=<,>,h,l
430 
431 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
432 
433 set mouse=a
434 
435 set selection=exclusive
436 
437 set selectmode=mouse,key
438 
439 " 通过使用: commands命令,告诉我们文件的哪一行被改变过
440 
441 set report=0
442 
443 " 在被分割的窗口间显示空白,便于阅读
444 
445 set fillchars=vert:\ ,stl:\ ,stlnc:\
446 
447 " 高亮显示匹配的括号
448 
449 set showmatch
450 
451 " 匹配括号高亮的时间(单位是十分之一秒)
452 
453 set matchtime=1
454 
455 " 光标移动到buffer的顶部和底部时保持3行距离
456 
457 set scrolloff=3
458 
459 " 为C程序提供自动缩进
460 
461 set smartindent
462 
463 " 高亮显示普通txt文件(需要txt.vim脚本)
464 
465 au BufRead,BufNewFile *  setfiletype txt
466 
467 "自动补全
468 
469 :inoremap ( ()<ESC>i
470 
471 :inoremap ) <c-r>=ClosePair(')')<CR>
472 
473 :inoremap { {<CR>}<ESC>O
474 
475 :inoremap } <c-r>=ClosePair('}')<CR>
476 
477 :inoremap [ []<ESC>i
478 
479 :inoremap ] <c-r>=ClosePair(']')<CR>
480 
481 :inoremap " ""<ESC>i
482 
483 :inoremap ' ''<ESC>i
484 
485 function! ClosePair(char)
486 
487     if getline('.')[col('.') - 1] == a:char
488 
489         return "\<Right>"
490 
491     else
492 
493         return a:char
494 
495     endif
496 
497 endfunction
498 
499 filetype plugin indent on 
500 
501 "打开文件类型检测, 加了这句才可以用智能补全
502 
503 set completeopt=longest,menu
504 
505 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
506 
507 " CTags的设定  
508 
509 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
510 
511 let Tlist_Sort_Type = "name"    " 按照名称排序  
512 
513 let Tlist_Use_Right_Window = 1  " 在右侧显示窗口  
514 
515 let Tlist_Compart_Format = 1    " 压缩方式  
516 
517 let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer,kill窗口也kill掉buffer  
518 
519 let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags  
520 
521 let Tlist_Enable_Fold_Column = 0    " 不要显示折叠树  
522 
523 autocmd FileType java set tags+=D:\tools\java\tags  
524 
525 "autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags  
526 
527 "let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的
528 
529 "设置tags  
530 
531 set tags=tags  
532 
533 "set autochdir 
534 
535 
536 
537 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
538 
539 "其他东东
540 
541 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
542 
543 "默认打开Taglist 
544 
545 let Tlist_Auto_Open=1 
546 
547 """""""""""""""""""""""""""""" 
548 
549 " Tag list (ctags) 
550 
551 """""""""""""""""""""""""""""""" 
552 
553 let Tlist_Ctags_Cmd = '/usr/bin/ctags' 
554 
555 let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 
556 
557 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim 
558 
559 let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
560 
561 " minibufexpl插件的一般设置
562 
563 let g:miniBufExplMapWindowNavVim = 1
564 
565 let g:miniBufExplMapWindowNavArrows = 1
566 
567 let g:miniBufExplMapCTabSwitchBufs = 1
568 let g:miniBufExplModSelTarget = 1

 

关于设置配色方案colorscheme evening这个语句后面的evening可以根据自己的喜好配置,vim中自带几种配色方案如下:

下面是我配置的vim界面

如果你还需要在你的vim中添加插件可以参考这篇博客

http://blog.csdn.net/namecyf/article/details/7787479

 

 

 

 

 

posted on 2016-06-02 23:29  AIL  阅读(3969)  评论(0编辑  收藏  举报

导航