因为熟悉了Windows下利用编译器进行编程,因此在刚刚接触Linux后的编程过程当中会感受其vim编译器的各类不方便编写程序,在逐渐的学习过程当中了解到能够经过配置vimrc使得vim编译时相似于VS。 html
首先咱们须要了解vimrc这个文件:vimrc有两个版本,分别为全局版本和用户版本,经过在vi下命令模式下输入【:version】会看到以下图所示的内容
java
其中系统vimrc文件是全局版本即系统中的公共版本,对其配置后全部用户下的vim编译器均被配置,用户vimrc文件是存在于每一个用户的主目录下的私有配置文件。
ios
了解这些之后就能够开始配置本身喜欢的vim环境了
编程
切换至root用户而后cd /etc目录下输入ll查看此目录下的vimrc,并经过vim vimrc进入vimrc文件中,能够看到里面的内容以下
vim
ps:为避免配置过程当中出错,建议将vimrc文件中的内容备份,如cp vimrc temp.txtbash
如下是一些我在配置vimrc时选择的配置文件,参考http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html这篇博客,若是你须要其余配置功能能够在网上查找app
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中添加插件能够参考这篇博客学习