分享

vim配置入门,到豪华版vim配置

 爱幽默 2017-04-12

  这几天一直研究vim的配置,许多版本总是不尽如人意,网上确实有许多优秀的文章值得参考,我的博客后面会贴上具有参考价值的博客链接,本文的将手把手教你配置一个功能详尽的vim.

       首先你要明白的是Linux下一切皆文件的思想,因此vim的配置文件.vimrc中的内容就决定了你的vim的功能。对于新手来说首先你要做的是保证你的linux(或者是centOs)能够连上网。我当时是这样解决的。

流程如下

1)点击 VM->Settings Hardware选项卡下面

 2)点击Network Adapter 设置如下图所示,首先我们在虚拟机中将网络配置设置成NAT,

3、进入Windows操作系统,然后右键点击我们的电脑,进入到管理界面  计算机-> 管理->服务和应用程序->服务,找到如下服务进程 VMware DHCP Service, VMware NAT Service。 分别点击右键->启动

二、下载并安装vim。

从官方网站ftp://ftp.vim.org/pub/vim/unix/中选择一个版本下载,我这里使用的是vim-7.4.tar.bz2centos安装vim7.4
 
系统版本centos6.4;
root权限
su - root 
 
卸载(当然你也可以不用卸载)
$ rpm -qa | grep vim
$ yum remove vim vim-enhanced vim-common vim-minimal  
 
下载、解压
$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2  
$ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
$ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz
$  
$ tar jxvf vim-7.4.tar.bz2  
$ tar zxvf vim-7.2-extra.tar.gz  
$ tar zxvf vim-7.2-lang.tar.gz  
$  
$ mv vim72 vim74  
 
 
安装编译环境
$ yum install ncurses-devel  
$ yum install gcc
 
编译安装
$ cd vim74/src  
$ ./configure --enable-multibyte \--with-features=huge \--disable-selinux  
$ make  
$ make install  
 
测试
   
$ vim --version  
VIM - Vi IMproved 7.4

三、接下来我们开始配置vim

1.下查看~/目录下有没有一个.vimrc的文件,如果没有自己在当前目录创建一个。


2.需要说明的是在root目录下的.vimrc对所有用户生效。你也可以在每个用户下单独配置个性化.vimrc.

3.以下是我配置的vim截图


4.vim的功能实际上是由配置文件和插件共同决定的,这里我提供一份配置文件源码。大家复制到自己的.vimrc文件中即可。方法是先复制到剪贴板然后打开cd ~/.vimrc,拷贝进去就好了。保存按:

sheft+:  w

退出输入:q

5.源码如下:

  1. set helplang=cn  
  2. set encoding=utf-8  
  3. set cscopequickfix=s-,c-,d-,i-,t-,e-  
  4. nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>  
  5. nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>  
  6. nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>  
  7. nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>  
  8. nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>  
  9. nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>  
  10. nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>  
  11. nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>  
  12. let g:miniBufExplMapCTabSwitchBufs = 1  
  13. let g:miniBufExplMapWindowNavVim = 1  
  14. let g:miniBufExplMapWindowNavArrows = 1  
  15. nnoremap <silent> <F12> :A<CR>  
  16. nnoremap <silent> <F3> :Grep<CR>  
  17. let g:SuperTabRetainCompletionType=2  
  18. let g:SuperTabDefaultCompletionType="<C-X><C-O>"  
  19. " 自动语法高亮  
  20.  syntax on  
  21. " 检测文件类型  
  22. filetype on  
  23. " 检测文件类型插件  
  24. filetype plugin on  
  25. " 不设定在插入状态无法用退格键和 Delete 键删除回车符  
  26. set backspace=indent,eol,start  
  27. set whichwrap+=<,>,h,l  
  28. " 显示行号  
  29. set number  
  30. " 上下可视行数  
  31. set scrolloff=6  
  32. " replace tab with space  
  33. set expandtab  
  34. " 设定 tab 长度为 4  
  35. set tabstop=4  
  36. " 设置按BackSpace的时候可以一次删除掉4个空格  
  37. set softtabstop=4  
  38. " 设定 << 和 >> 命令移动时的宽度为 4  
  39. set shiftwidth=4  
  40. set smarttab  
  41. set history=1024  
  42. " 不突出显示当前行  
  43. set nocursorline  
  44. " 覆盖文件时不备份  
  45. set nobackup  
  46. " 自动切换当前目录为当前文件所在的目录  
  47. set autochdir  
  48. " 搜索时忽略大小写,但在有一个或以上大写字母时仍大小写敏感  
  49. set ignorecase  
  50. set smartcase  
  51. " 搜索到文件两端时不重新搜索  
  52. set nowrapscan  
  53. " 实时搜索  
  54. set incsearch  
  55. " 搜索时高亮显示被找到的文本  
  56. set hlsearch  
  57. " 关闭错误声音  
  58. set noerrorbells  
  59. set novisualbell  
  60. "set t_vb=  
  61.   
  62. " 不自动换行  
  63. "set nowrap  
  64. "How many tenths of a second to blink  
  65. set mat=2  
  66. " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存  
  67. set hidden  
  68. " 智能自动缩进  
  69. set smartindent  
  70. " 设定命令行的行数为 1  
  71. set cmdheight=1  
  72. " 显示状态栏 (默认值为 1, 无法显示状态栏)  
  73. set laststatus=2  
  74. "显示括号配对情况  
  75. set showmatch  
  76.   
  77. " 解决自动换行格式下, 如高度在折行之后超过窗口高度结果这一行看不到的问题  
  78. set display=lastline  
  79. " 设定配色方案  
  80. colorscheme evening  
  81. " 设置在状态行显示的信息  
  82. set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ [%{(&fenc==\"\"?&enc:&fenc).(&bomb?\",BOM\":\"\")}]\ %c:%l/%L%)  
  83.   
  84. " 显示Tab符  
  85. set list  
  86. set listchars=tab:\|\ ,trail:.,extends:>,precedes:<  
  87. "启动时不显示 捐赠提示  
  88. set shortmess=atl  
  89.   
  90. "blank      空白  
  91. "buffers    缓冲区  
  92. "curdir     当前目录  
  93. "folds      折叠  
  94. "help       帮助  
  95. "options    选项  
  96. "tabpages   选项卡  
  97. "winsize    窗口大小  
  98. "slash      转换文件路径中的\为/以使session文件兼容unix  
  99. "unix       设置session文件中的换行模式为unix  
  100. set sessionoptions=blank,buffers,curdir,folds,help,options,tabpages,winsize,slash,unix,resize  
  101.   
  102. " 允许backspace和光标键跨越行边界  
  103. set whichwrap+=<,>,h,l  
  104. " backspace  
  105. set backspace=eol,start,indent  
  106.   
  107. " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)  
  108. set mouse=a  
  109. set selection=exclusive  
  110. set selectmode=mouse,key  
  111.   
  112. " 在被分割的窗口间显示空白,便于阅读  
  113. set fillchars=vert:\ ,stl:\ ,stlnc:\  
  114.   
  115. " 高亮显示匹配的括号  
  116. set showmatch  
  117.   
  118. " 匹配括号高亮的时间(单位是十分之一秒)  
  119. set matchtime=5  
  120.   
  121. "编码设置  
  122. set enc=utf-8  
  123. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936  
  124.   
  125. " set mapleader  
  126. let mapleader=","  
  127.   
  128. nmap J 5j  
  129. nmap K 5k  
  130.   
  131. " Ctrl+a  
  132. nmap <silent> <C-a> ggvG$  
  133.   
  134. " 选中状态下 Ctrl+c 复制  
  135. vnoremap <c-c> "+y  
  136.   
  137. " Ctrl+v  
  138. nmap <silent> <C-v> "+p  
  139.   
  140. " 窗口切换  
  141. nnoremap <c-h> <c-w>h  
  142. nnoremap <c-l> <c-w>l  
  143. nnoremap <c-j> <c-w>j  
  144. nnoremap <c-k> <c-w>k  
  145.   
  146. " 插入模式下上下左右移动光标  
  147. inoremap <c-h> <left>  
  148. inoremap <c-l> <right>  
  149. inoremap <c-j> <c-o>gj  
  150. inoremap <c-k> <c-o>gk  
  151.   
  152. " Ctrl+s  
  153. " If the current buffer has never been saved, it will have no name,  
  154. " call the file browser to save it, otherwise just save it.  
  155. "nnoremap <silent> <C-S> :if expand("%") == ""<CR>browse confirm w<CR>else<CR>confirm w<CR>endif<CR>  
  156. "imap <c-s> <c-o><c-s><CR>  
  157. " Use CTRL-S for saving, also in Insert mode  
  158. nmap <C-S> :update<CR>  
  159. vmap <C-S> <C-C>:update<CR>  
  160. imap <C-S> <C-O>:update<CR>  
  161.   
  162. " C++的编译和运行  
  163. "map <F6> :call CompileRunGpp()<CR>  
  164. "func! CompileRunGpp()  
  165. "exec "w"  
  166. "exec "!g++ % -o %<"  
  167. "exec "! ./%<"  
  168. "endfunc  
  169. map <F10> :call RunGpp()<cr>    
  170. func! RunGpp()    
  171. exec "w"    
  172. exec "! ./%<"    
  173. endfunc    
  174.   
  175. "vim plugin setting  
  176.   
  177. "======================"  
  178. set tags=tags  
  179. set tags+=~/.vim/my-tags/tags  
  180. set tags+=~/.vim/my-tags/stl-tags  
  181. set tags+=~/.vim/my-tags/sys-tags  
  182. set autochdir    
  183. "Update ctags    
  184. map <silent> <F8> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q<cr>   
  185.   
  186. """"""""""""""""""""""""""""""  
  187.    " Tag list (ctags)  
  188. """"""""""""""""""""""""""""""  
  189. "if MySys() == "windows"                "设定windows系统中ctags程序的位置  
  190. "   let Tlist_Ctags_Cmd = 'ctags'  
  191. "elseif MySys() == "linux"              "设定Linux系统中ctags程序的位置  
  192.    let Tlist_Ctags_Cmd = '/home/sphinx/.vim/ctags-5.8/ctags'  
  193. "endif  
  194.   
  195. let Tlist_Show_One_File = 1            "不同时显示多个文件的tag,只显示当前文件的  
  196. let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim  
  197. let Tlist_Use_Right_Window = 0         "在右侧窗口中显示taglist窗口  
  198. let Tlist_OnlyWindow=1  
  199.   
  200. "let Tlist_Use_Right_Window=0  
  201. "let Tlist_Sort_Type='name'  
  202. "let Tlist_Show_Menu=1  
  203. "let Tlist_Max_Submenu_Items=10  
  204. "let Tlist_Max_Tag_length=16     "20  
  205. "let Tlist_Use_SingleClick=0  
  206. "let Tlist_Auto_Open=0  
  207. "let Tlist_Close_On_Select=0  
  208. "let Tlist_File_Fold_Auto_Close=1  
  209. "let Tlist_GainFocus_On_ToggleOpen=0  
  210. "let Tlist_Process_File_Always=1  
  211. "let Tlist_WinHeight=10  
  212. "let Tlist_WinWidth=18  
  213. "let Tlist_Use_Horiz_Window=0  
  214.   
  215. let Tlist_Auto_Highlight_Tag = 1  
  216. "let Tlist_Auto_Open = 1  
  217. let Tlist_Auto_Update = 1  
  218. let Tlist_Close_On_Select = 0  
  219. let Tlist_Compact_Format = 0  
  220. let Tlist_Display_Prototype = 0  
  221. let Tlist_Display_Tag_Scope = 1  
  222. let Tlist_Enable_Fold_Column = 0  
  223. let Tlist_File_Fold_Auto_Close = 0  
  224. let Tlist_GainFocus_On_ToggleOpen = 1  
  225. let Tlist_Hightlight_Tag_On_BufEnter = 1  
  226. let Tlist_Inc_Winwidth = 0  
  227. let Tlist_Max_Submenu_Items = 1  
  228. let Tlist_Max_Tag_Length = 30  
  229. let Tlist_Process_File_Always = 0  
  230. let Tlist_Show_Menu = 0  
  231. let Tlist_Sort_Type = "order"  
  232. let Tlist_Use_Horiz_Window = 0  
  233. let Tlist_WinWidth = 31  
  234.   
  235. map <F12> :TlistOpen<CR>  
  236.   
  237. "OMNI  
  238. "omnicppcoplete    
  239. "-- omnicppcomplete setting --     
  240. set completeopt=menu,menuone     
  241. let OmniCpp_MayCompleteDot = 1     
  242. " autocomplete with .     
  243. let OmniCpp_MayCompleteArrow = 1     
  244. " autocomplete with ->     
  245. let OmniCpp_MayCompleteScope = 1     
  246. " autocomplete with ::     
  247. let OmniCpp_SelectFirstItem = 2     
  248. " select first item (but don't insert)     
  249. let OmniCpp_NamespaceSearch = 2     
  250. " search namespaces in this and included files     
  251. let OmniCpp_ShowPrototypeInAbbr = 1     
  252. " show function prototype in popup window     
  253. let OmniCpp_GlobalScopeSearch=1     
  254. let OmniCpp_DisplayMode=1     
  255. let OmniCpp_DefaultNamespaces=["std"]    
  256. set nocp    
  257. filetype plugin on    
  258.   
  259. "WinManager  
  260. let g:winManagerWindowLayout='FileExplorer|TagList'  
  261. "let g:winManagerWindowLayout='FileExplorer|BufExplorer|TagList'  
  262. let g:persistentBehaviour=0  
  263. let g:winManagerWidth=20  
  264. let g:defaultExplorer=1  
  265. nmap wm :WMToggle<cr>  
  266.   
  267. "QuickFix  
  268. nmap <F6> :cn<cr>  
  269. nmap <F7> :cp<cr>  
  270.   
  271. "MiniBufExplorer  
  272. "let g:miniBufExplMapWindowNavVim = 1  
  273. "let g:miniBufExplMapWindowNavArrows = 1  
  274. let g:miniBufExplModSelTarget = 1  
  275. let g:miniBufExplorerMoreThanOne = 2  
  276. let g:miniBufExplModSelTarget = 0  
  277. let g:miniBufExplUseSingleClick = 1  
  278. let g:miniBufExplMapWindowNavVim = 1  
  279. let g:miniBufExplVSplit = 15    "25  
  280. let g:miniBufExplSplitBelow=1  
  281.   
  282. let g:bufExplorerSortBy = "name"  
  283.   
  284. autocmd BufRead,BufNew :call UMiniBufExplorer  
  285.   
  286. map <leader>u :TMiniBufExplorer<cr>  
  287.   
  288.   
  289. "AutoClose  
  290. "let g:AutoClosePairs = {'(': ')', '{': '}', '[': ']', '"': '"', "'": "'"}  
  291. let g:AutoClosePairs = {'('')''{''}''['']''"''"'"'""'"}   
  292. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""   
  293. "   Maintainer:   
  294. "   "       Geek SphinX  
  295. "   "       topcodersphinx@gmail.com  
  296. "   "  
  297. "   "   Version:  
  298. "   "       1.0 - Thu Nov  1 17:21:44 CST 2012  
  299. "   "  
  300. "   """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  301.   
  302. " Sets how many lines of history VIM has to remember  
  303. " set history=1024  
  304. "  
  305. " " Auto syntax highlight  
  306. " set syntax=on  
  307. "  
  308. " " Check file format  
  309. " filetype on  
  310. "  
  311. " " Enable filetype plugins  
  312. " filetype plugin on  
  313. " filetype indent on  
  314. "  
  315. " " Sets non VI compatible mode  
  316. " set nocompatible  
  317. "  
  318. " " Set to auto read when a file is changed from the outside  
  319. " set autoread  
  320. "  
  321. " " With a map leader it's possible to do extra key combinations  
  322. " " like <leader>w saves the current file  
  323. " let mapleader = ","  
  324. " let g:mapleader = ","  
  325. "  
  326. " " Fast saving  
  327. " nmap <leader>w :w<cr>  
  328. " nmap <leader>q :q<cr>  
  329. "  
  330. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  331. " " => VIM user interface  
  332. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  333. " " Replace J, K  
  334. " nmap J 5j  
  335. " nmap K 5k  
  336. "  
  337. " " Ctrl+A to select all content in visual mode  
  338. " nmap <silent> <C-a> ggvG$  
  339. "  
  340. " " Ctrl+C to copy  
  341. " vnoremap <C-c> "+y  
  342. "  
  343. " " Ctrl+V to paste  
  344. " nmap <silent> <C-v> "+p  
  345. "  
  346. " " Set 7 lines to the cursor - when moving vertically using j/k  
  347. " set so=7  
  348. "  
  349. " " Turn on the Wild menu  
  350. " set wildmenu  
  351. "  
  352. " " Ignore compiled files  
  353. " set wildignore=*.o,*~,*.pyc  
  354. "  
  355. " "Always show current position  
  356. " set ruler  
  357. "  
  358. " " Height of the command bar  
  359. " set cmdheight=2  
  360. "  
  361. " " A buffer becomes hidden when it is abandoned  
  362. " set hid  
  363. "  
  364. " " Configure backspace so it acts as it should act  
  365. " set whichwrap+=<,>  
  366. " set backspace=indent,eol,start  
  367. "  
  368. " " Ignore case when searching  
  369. " set ignorecase  
  370. "  
  371. " " When searching try to be smart about cases   
  372. " set smartcase  
  373. "  
  374. " " Highlight search results  
  375. " set hlsearch  
  376. "  
  377. " " Makes search act like search in modern browsers  
  378. " set incsearch  
  379. "  
  380. " " Don't redraw while executing macros (good performance config)  
  381. " set lazyredraw  
  382. "  
  383. " " For regular expressions turn magic on  
  384. " set magic  
  385. "  
  386. " " Show matching brackets when text indicator is over them  
  387. " set showmatch  
  388. "  
  389. " " How many tenths of a second to blink when matching brackets  
  390. " set mat=2  
  391. "  
  392. " " No annoying sound on errors set noerrorbells  
  393. " set novisualbell  
  394. " set t_vb=  
  395. " set tm=500  
  396. "  
  397. " " Show line number  
  398. " set number  
  399. "  
  400. " " Highlight over 80 columns  
  401. " highlight OverLength ctermbg=red ctermfg=white guibg=#592929  
  402. " match OverLength /\%81v.\+/  
  403. "  
  404. " " Show Tab symbol  
  405. " set list  
  406. " set listchars=tab:\|\ ,trail:.,extends:>,precedes:<  
  407. "  
  408. " " Switch windows  
  409. " nnoremap <C-h> <C-w>h  
  410. " nnoremap <C-l> <C-w>l  
  411. " nnoremap <C-j> <C-w>j  
  412. " nnoremap <C-k> <C-w>k  
  413. "  
  414. " " Move cursor in insert mode  
  415. " inoremap <C-h> <C-o>h  
  416. " inoremap <C-l> <C-o>l  
  417. " inoremap <C-j> <C-o>j  
  418. " inoremap <C-k> <C-o>k  
  419. "  
  420. "  
  421. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  422. " " => Colors and Fonts  
  423. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  424. " " Enable syntax highlighting  
  425. " syntax enable  
  426. "  
  427. " "colorscheme desert  
  428. " colorscheme molokai  
  429. " set background=dark  
  430. "  
  431. " " Set extra options when running in GUI mode  
  432. " if has("gui_running")  
  433. "     set guioptions-=T  
  434. "         set guioptions+=e  
  435. "             set t_Co=256  
  436. "                 set guitablabel=%M\ %t  
  437. "                 endif  
  438. "  
  439. "                 " Set utf8 as standard encoding and en_US as the standard  
  440. "                 language  
  441. "                 set encoding=utf8  
  442. "  
  443. "                 " Use Unix as the standard file type  
  444. "                 set ffs=unix,dos,mac  
  445. "  
  446. "                 " Use Inconsolata as the gui font  
  447. "                 set guifont=Inconsolata\ 15  
  448. "  
  449. "                 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  450. " => Text, tab and indent related  
  451. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  452. " " Use spaces instead of tabs  
  453. " set expandtab  
  454. "  
  455. " " Be smart when using tabs ;)  
  456. " set smarttab  
  457. "  
  458. " " 1 tab == 4 spaces  
  459. " set shiftwidth=4  
  460. " set tabstop=4  
  461. "  
  462. " " Linebreak on 500 characters  
  463. " set lbr  
  464. " set tw=500  
  465. "  
  466. " set ai "Auto indent  
  467. " set si "Smart indent  
  468. " set wrap "Wrap lines  
  469. "  
  470. "  
  471. " """"""""""""""""""""""""""""""  
  472. " " => Status line  
  473. " """"""""""""""""""""""""""""""  
  474. " " Always show the status line  
  475. " set laststatus=2  
  476. "  
  477. " " Format the status line  
  478. " "set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \  
  479. " Line:\ %l  
  480. "  
  481. "  
  482. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  483. " " => Mouse  
  484. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  485. " set mouse=a  
  486. " set selection=exclusive  
  487. " set selectmode=mouse,key  
  488. "  
  489. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  490. " " => Plugins  
  491. " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  

6.插件的下载与安装。

       在~/.vim文件下有建一个doc 文件夹和plugin的文件夹。一般指导性的帮助文件会放到doc文件夹。插件的源码等会放到plugin中。

可能用到的插件如下:此链接中有各种有用的插件大家可以看教程操作。

      插件下载和配置:http://blog.csdn.NET/wooin/article/details/1858917

      用到的vim命令:http://www.111cn.Net/sys/linux/52704.htm

     注意事项:let  g:winManagerWindowLayout='FileExplorer|TagList'
nmap  wm  :WMToggle<cr>

在"wm"和":WMToggle"中间是有一个空格的!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多