现在的位置: 首页 > 综合 > 正文

vim环境变量配置、背景色配置

2018年03月18日 ⁄ 综合 ⁄ 共 12946字 ⁄ 字号 评论关闭

  转自http://blog.csdn.net/mybelief321/article/details/9066249

  我们使用vi或者vim的时候,如果想要显示行号,可能会这样做:切换到命令模式,然后输入set nu,再按回车键就显示了;还有就是咱们在编写程序的时候,有的时候会希望按下回车键后,光标不是每次都在行首,而是与上一行的第一个非空格符处对齐,也就是实现所谓的缩排功能,这是你可以在命令模式下输入set autoindent。但是每次这样输入太麻烦了,可不可以在每次利用vim命令编辑时自动就设置好功能呢?

   简单说一下我的配置步骤。下表为vim的环境参数(鸟哥那本书上的)

  

   上面都是鸟哥的私房菜里边的,下面简单截图记录一下我的设置,以后想添加功能自己再添加就行了

 1、使用命令:  cd /etc/vim  进入配置目录

   

 2、使用命令: vim vimrc编辑vimrc文件,我的ubuntu需要使用命令:sudo vim vimrc

 3、在vimrc文件的最后一行,添加你想要设置的选项,下图是我想使vim默认的一些功能

  

  4、然后使用 wq保存就可以了,这样设置就成功了。

看了一下很符合口味,就借用了。基本没变动,稍微修改了几句,

注:以下带有网址的都是需要去下载这些插件,点击网址进去就有了

另注:貌似Tlist那个网址被我不小心删掉了

再注:使用archlinux的,可以使用yaourt再AUR中找,很多都是以vim-XXX开头的,命令格式如下:

[html] view
plain
copy

  1. yaourt -Ss vim-XX  


然后再下载,命令如下:

[html] view
plain
copy

  1. yaourt -S vim-XX  



vim的自动补齐一直弄不好,有空找个人帮忙教一下,另外有一些插件功能还没想出来怎么用。现在把弄好的贴上。

另外快捷键一多,没熟悉前总是很难受的,所以弄了一个help.txt文档,放在~/.vim/目录下,每次输入<leader>he就可以打开帮助文档。

新增:抽空弄了一下自动补齐,感觉不错,安装插件neocomplcache

在archlinux中,AUR里面也有,名称为 vim-neocomplcache,所以输入命令:

[html] view
plain
copy

  1. # yaourt -S vim-neocomplcache  

然后在~/.vimrc中补上一行:

[html] view
plain
copy

  1. let g:neocomplcache_enable_at_startup = 1   


改变:删掉了关于cscope快捷键,使用官网推荐的快捷方式(其实也没怎么用到)

重新修改了几个快捷键,感觉有些用起来还是不舒服

关于快速编译:永不来autotool系列的工具,找了本书结果有300多页,也没那么多精力去看,然后就偷懒装了一个Qt,用Qt自带的qmake工具生成Makefile工具

用法如下:

[html] view
plain
copy

  1. # qmake -project  


该命令会查找当前目录下的文件生成.pro文件,之后可以修改.pro文件来配置自己想要的功能

[html] view
plain
copy

  1. # qmake  


该命令会根据当前目录下的.pro文件生成对应的Makefile文件

注:在vim中输入:make可以让vim编译器自动根据当前目录下的Makefile文件进行编译


配置文件~/.vimrc

[html] view
plain
copy

  1. let mapleader = "m"    " 比较习惯用;作为命令前缀,右手小拇指直接能按到  
  2. " 把空格键映射成:  
  3. nmap <space> /  
  4.   
  5. " 快捷打开编辑vimrc文件的键盘绑定  
  6. map <silent> <leader>ee :e $HOME/.vimrc<cr>  
  7. autocmd! bufwritepost *.vimrc source $HOME/.vimrc  
  8.   
  9. " ^z快速进入shell  
  10. nmap <C-Z> :shell<cr>  
  11. ""inoremap <leader><esc>  
  12.   
  13. " 判断操作系统  
  14. if (has("win32") || has("win64") || has("win32unix"))  
  15.     let g:isWin = 1  
  16. else  
  17.     let g:isWin = 0  
  18. endif  
  19.   
  20. " 判断是终端还是gvim  
  21. if has("gui_running")  
  22.     let g:isGUI = 1  
  23. else  
  24.     let g:isGUI = 0  
  25. endif  
  26. "set cursorline      "高亮当前行  
  27. set nocompatible    " 关闭兼容模式  
  28. syntax enable       " 语法高亮  
  29. syntax on  
  30. filetype plugin on  " 文件类型插件  
  31. filetype indent on  
  32. "set shortmess=atI   " 去掉欢迎界面  
  33. set autoindent  
  34. autocmd BufEnter * :syntax sync fromstart  
  35. set nu              " 显示行号  
  36. set showcmd         " 显示命令  
  37. set lz              " 当运行宏时,在命令执行完成之前,不重绘屏幕  
  38. set hid             " 可以在没有保存的情况下切换buffer  
  39. set backspace=eol,start,indent   
  40. set whichwrap+=<,>,h,l " 退格键和方向键可以换行  
  41. "set incsearch       " 增量式搜索  
  42. set nohlsearch  
  43. set hlsearch        " 高亮搜索  
  44. set ignorecase      " 搜索时忽略大小写  
  45. set magic           " 额,自己:h magic吧,一行很难解释  
  46. set showmatch       " 显示匹配的括号  
  47. set nobackup        " 关闭备份  
  48. set nowb  
  49. set noswapfile      " 不使用swp文件,注意,错误退出后无法恢复  
  50. set lbr             " 在breakat字符处而不是最后一个字符处断行  
  51. set ai              " 自动缩进  
  52. set si              " 智能缩进  
  53. set cindent         " C/C++风格缩进  
  54. set wildmenu           
  55. set nofen  
  56. set fdl=10  
  57. set cmdheight=4     "设ckspace和光标键跨越行边界   
  58. set whichwrap+=<,>,h,l   
  59.   
  60. " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)   
  61. set mouse=a   
  62. set selection=exclusive   
  63. set selectmode=mouse,key "置控制窗口大小  
  64.   
  65.   
  66. " tab转化为4个字符  
  67. set expandtab  
  68. set smarttab  
  69. set shiftwidth=4  
  70. set tabstop=4  
  71.   
  72. " 不使用beep或flash   
  73. set vb t_vb=  
  74.   
  75. set background=dark  
  76. set t_Co=256  
  77. colorscheme torte  
  78.   
  79. set history=400  " vim记住的历史操作的数量,默认的是20  
  80. set autoread     " 当文件在外部被修改时,自动重新读取  
  81. set mouse=a     " 在所有模式下都允许使用鼠标,还可以是n,v,i,c等  
  82.   
  83. "在gvim中高亮当前行  
  84. if (g:isGUI)  
  85.     set cursorline  
  86.     colorscheme wombat  
  87.     hi cursorline guibg=#333333  
  88.     hi CursorColumn guibg=#333333  
  89.     "set guifont=Consolas\ 10  
  90.     "set guifontwide=Consolas\ 10  
  91.     set guifont=DejaVu\ Sans\ Mono\ 10  
  92.     set gfw=DejaVu\ Sans\ Mono\ 10  
  93.     " 不显示toolbar  
  94.     set guioptions-=T  
  95.     " 不显示菜单栏  
  96.     "set guioptions-=m  
  97. endif  
  98.   
  99. " 设置字符集编码,默认使用utf8  
  100. if (g:isWin)  
  101.     let &termencoding=&encoding " 通常win下的encoding为cp936  
  102.     set fileencodings=utf8,cp936,ucs-bom,latin1  
  103. else  
  104.     set encoding=utf8  
  105.     set fileencodings=utf8,gb2312,gb18030,ucs-bom,latin1  
  106. endif  
  107.   
  108. " 状态栏  
  109. set laststatus=2      " 总是显示状态栏  
  110. highlight StatusLine cterm=bold ctermfg=yellow ctermbg=blue  
  111. " 获取当前路径,将$HOME转化为~  
  112. function! CurDir()  
  113.     let curdir = substitute(getcwd(), $HOME, "~", "g")  
  114.     return curdir  
  115. endfunction  
  116. set statusline=[%n]\ %f%m%r%h\ \|\ \ pwd:\ %{CurDir()\}\/%f\ \ \|%=\|\ %l,%c\ %p%%\ \|\ ascii=%b,hex=%b%{((&fenc==\"\")?\"\":\"\ \|\ \".&fenc)}\ \|\ %{$USER}\ @\ %{hostname()}\   
  117.   
  118.   
  119. " 根据给定方向搜索当前光标下的单词,结合下面两个绑定使用  
  120. function! VisualSearch(direction) range  
  121.     let l:saved_reg = @"  
  122.     execute "normal! vgvy"  
  123.     let l:pattern = escape(@", '\\/.*$^~[]')  
  124.     let l:pattern = substitute(l:pattern, "\n$", "", "")  
  125.     if a:direction == 'b'  
  126.         execute "normal ?" . l:pattern . "<cr>"  
  127.     else  
  128.         execute "normal /" . l:pattern . "<cr>"  
  129.     endif  
  130.     let @/ = l:pattern  
  131.     let @" = l:saved_reg  
  132. endfunction  
  133. " 用 */# 向 前/后 搜索光标下的单词  
  134. vnoremap <silent> * :call VisualSearch('f')<CR>  
  135. vnoremap <silent> # :call VisualSearch('b')<CR>  
  136.   
  137.   
  138.   
  139. " 恢复上次文件打开位置  
  140. ""set viminfo='10,\"100,:20,%,n~/.viminfo  
  141. ""au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif  
  142.   
  143. " 删除buffer时不关闭窗口  
  144. command! Bclose call <SID>BufcloseCloseIt()  
  145. function! <SID>BufcloseCloseIt()  
  146.     let l:currentBufNum = bufnr("%")  
  147.     let l:alternateBufNum = bufnr("#")  
  148.   
  149.     if buflisted(l:alternateBufNum)  
  150.         buffer #  
  151.     else  
  152.         bnext  
  153.     endif  
  154.   
  155.     if bufnr("%") == l:currentBufNum  
  156.         new  
  157.     endif  
  158.   
  159.     if buflisted(l:currentBufNum)  
  160.         execute("bdelete! ".l:currentBufNum)  
  161.     endif  
  162. endfunction  
  163.   
  164.   
  165. " 快捷输入  
  166. " 自动完成括号和引号  
  167. inoremap ( ()<esc>:let leavechar=")"<cr>i  
  168. inoremap [ []<esc>:let leavechar="]"<cr>i  
  169. inoremap } {}<esc>:let leavechar="}"<cr>i  
  170. inoremap { {<esc>o}<esc>:let leavechar="}"<cr>O  
  171. inoremap ' ''<esc>:let leavechar="'"<cr>i  
  172. inoremap " ""<esc>:let leavechar='"'<cr>i  
  173.   
  174. " 插件窗口的宽度,如TagList,NERD_tree等,自己设置  
  175. let s:PlugWinSize = 25  
  176.   
  177. " taglist.vim down lo  
  178. "设置依次按下 w m两个键打开列表  
  179. nmap wm :WMToggle<cr>  
  180. let Tlist_Show_One_File=1  
  181. let Tlist_Exit_OnlyWindow=1  
  182. let g:winManagerWindowLayout='FileExplorer|TagList'  
  183. let Tlist_Use_Right_Window = 0  
  184. let Tlist_File_Fold_Auto_Close = 1  
  185. let Tlist_GainFocus_On_ToggleOpen = 0  
  186. let Tlist_WinWidth = s:PlugWinSize  
  187. let Tlist_Auto_Open = 0  
  188. let Tlist_Display_Prototype = 0  
  189. "let Tlist_Close_On_Select = 1  
  190.   
  191.   
  192. " OmniCppComplete.vim  
  193. " http://www.vim.org/scripts/script.php?script_id=1520  
  194. set completeopt=menu  
  195. let OmniCpp_ShowPrototypeInAbbr = 1   
  196. let OmniCpp_DefaultNamespaces = ["std"]     " 逗号分割的字符串  
  197. let OmniCpp_MayCompleteScope = 1   
  198. let OmniCpp_ShowPrototypeInAbbr = 0   
  199. let OmniCpp_SelectFirstItem = 2   
  200.   
  201. " c-j自动补全,当补全菜单打开时,c-j,k上下选择  
  202. "imap <expr> <c-u>      pumvisible()?"\<C-N>":"\<C-X><C-O>"  
  203. "imap <expr> <c-i>      pumvisible()?"\<C-P>":"\<esc>"  
  204. " f:文件名补全,l:行补全,d:字典补全,]:tag补全  
  205. "imap <C-]>             <C-X><C-]>  
  206. imap <C-F>             <C-X><C-F>  
  207. imap <C-D>             <C-X><C-D>  
  208. imap <C-L>             <C-X><C-L>  
  209.   
  210.   
  211. " NERD_commenter.vim  
  212. " http://www.vim.org/scripts/script.php?script_id=1218  
  213. " Toggle单行注释/“性感”注释/注释到行尾/取消注释  
  214. map <leader>cc ,c<space>  
  215. map <leader>cs ,cs  
  216. map <leader>c$ ,c$  
  217. map <leader>cu ,cu  
  218.   
  219.   
  220. "-----------------------------------------------------------------  
  221. "" plugin - DoxygenToolkit.vim 由注释生成文档,并且能够快速生成函数标准注释  
  222. "-----------------------------------------------------------------  
  223. let g:DoxygenToolkit_authorName="Asins - asinsimple AT gmail DOT com"  
  224. let g:DoxygenToolkit_briefTag_funcName="yes"  
  225. map <leader>da :DoxAuthor<CR>  
  226. map <leader>df :Dox<CR>  
  227. map <leader>db :DoxBlock<CR>  
  228. map <leader>dc <End>a /* */<LEFT><LEFT><LEFT>  
  229.   
  230.   
  231. " NERD tree  
  232. " http://www.vim.org/scripts/script.php?script_id=1658  
  233. let NERDTreeShowHidden = 1  
  234. let NERDTreeWinPos = "left"  
  235. let NERDTreeWinSize = s:PlugWinSize   
  236. nmap wn :NERDTreeToggle<cr>  
  237.   
  238. " DoxygenToolkit.vim  
  239. " http://www.vim.org/scripts/script.php?script_id=987  
  240. " 暂时没有使用  
  241.   
  242. " 更新ctags和cscope索引  
  243. " href: http://www.vimer.cn/2009/10/把vim打造成一个真正的ide2.html  
  244. " 稍作修改,提取出DeleteFile函数,修改ctags和cscope执行命令  
  245. map <F6> :call Do_CsTag()<cr>  
  246. function! Do_CsTag()  
  247.     let dir = getcwd()  
  248.   
  249.     "先删除已有的tags和cscope文件,如果存在且无法删除,则报错。  
  250.     if ( DeleteFile(dir, "tags") )   
  251.         return   
  252.     endif  
  253.     if ( DeleteFile(dir, "cscope.files") )   
  254.         return   
  255.     endif  
  256.     if ( DeleteFile(dir, "cscope.out") )   
  257.         return   
  258.     endif  
  259.   
  260.     if(executable('ctags'))  
  261.         silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."  
  262.     endif  
  263.     if(executable('cscope') && has("cscope") )  
  264.         if(g:isWin)  
  265.             silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"  
  266.         else  
  267.             silent! execute "!find . -iname '*.[ch]' -o -name '*.cpp' > cscope.files"  
  268.         endif  
  269.         silent! execute "!cscope -b"  
  270.         execute "normal :"  
  271.         if filereadable("cscope.out")  
  272.             execute "cs add cscope.out"  
  273.         endif  
  274.     endif  
  275.     " 刷新屏幕  
  276.     execute "redr!"  
  277. endfunction  
  278.   
  279. function! DeleteFile(dir, filename)  
  280.     if filereadable(a:filename)  
  281.         if (g:isWin)  
  282.             let ret = delete(a:dir."\\".a:filename)  
  283.         else  
  284.             let ret = delete("./".a:filename)  
  285.         endif  
  286.         if (ret != 0)  
  287.             echohl WarningMsg | echo "Failed to delete ".a:filename | echohl None  
  288.             return 1  
  289.         else  
  290.             return 0  
  291.         endif  
  292.     endif  
  293.     return 0  
  294. endfunction  
  295. " cscope 绑定    
  296. if has("cscope")    
  297.     set csto=1    
  298.     set cst    
  299.     set nocsverb    
  300.     set cscopequickfix=s-,c-,d-,i-,t-,e-  
  301.     if filereadable("cscope.out")    
  302.         cs add cscope.out    
  303.     endif   
  304. endif    
  305.   
  306. "quickfix 配置"  
  307. map     <F3>    :cw<cr>  
  308. map     <F2>    :cn<cr>  
  309.   
  310. " Vimwiki配置  
  311. let g:vimwiki_list = [{'path': '~/Dropbox/MyWiki/my_site/',  
  312.             \ 'path-html': '~/Dropbox/MyWiki/my_site_html/',  
  313.             \ 'html-header': '~/Dropbox/MyWiki/templates/header.tpl',  
  314.             \ 'html-footer': '~/Dropbox/MyWiki/templates/footer.tpl'}]  
  315. let g:vimwiki_camel_case=0  
  316.   
  317. let wiki = {}  
  318. let wiki.path = '~/Dropbox/MyWiki/my_site/'  
  319. let wiki.nested_syntaxes = {'python': 'python', 'c++': 'cpp'}  
  320. let g:vimwiki_list = [wiki]  
  321.   
  322. "pythoncomplete配置  
  323. autocmd filetype python set omnifunc=pythoncomplete#Complete  
  324.   
  325. "定义在插入模式下  
  326. "使用ctrl+j为向下一行   
  327. inoremap <C-h> <Left>  
  328. inoremap <C-j> <Down>  
  329. inoremap <C-k> <Up>  
  330. inoremap <C-l> <Right>  
  331.   
  332. "可以快速保存和退出  
  333. nmap <leader>q :q<CR>  
  334. nmap <leader>w :w<CR>  
  335. nmap <leader>qq :q!<CR>   
  336. nmap <leader>wq :wq<CR>  
  337.   
  338.   
  339. " quickly go to help menu of this function  
  340. nmap <leader>an :Man 3 <cword><CR>  
  341.   
  342. " super enter , it can gucikly go to the next line  
  343. imap e<CR> <End><CR>  
  344.   
  345. imap <leader>dd <Esc>ddi  
  346. imap e;  <End>;  
  347.   
  348. map <silent> <leader>he :tabnew ~/.vim/help.txt<CR>  
  349.   
  350.   
  351. "  
  352. "设置F5编译,F6运行  
  353.    
  354. func! CompileGcc()  
  355.     exec "w"  
  356.     let compilecmd="!gcc "  
  357.     let compileflag="-o %< "  
  358.     if search("mpi.h") != 0  
  359.         let compilecmd = "!mpicc "  
  360.     endif  
  361.     if search("glut.h") != 0  
  362.         let compileflag ." -lglut -lGLU -lGL "  
  363.     endif  
  364.     if search("cv.h") != 0  
  365.         let compileflag ." -lcv -lhighgui -lcvaux "  
  366.     endif  
  367.     if search("omp.h") != 0  
  368.         let compileflag ." -fopenmp "  
  369.     endif  
  370.     if search("math.h") != 0  
  371.         let compileflag ." -lm "  
  372.     endif  
  373.     exec compilecmd." % ".compileflag  
  374. endfunc  
  375. func! CompileGpp()  
  376.     exec "w"  
  377.     let compilecmd="!g++ "  
  378.     let compileflag="-o %< "  
  379.     if search("mpi.h") != 0  
  380.         let compilecmd = "!mpic++ "  
  381.     endif  
  382.     if search("glut.h") != 0  
  383.         let compileflag ." -lglut -lGLU -lGL "  
  384.     endif  
  385.     if search("cv.h") != 0  
  386.         let compileflag ." -lcv -lhighgui -lcvaux "  
  387.     endif  
  388.     if search("omp.h") != 0  
  389.         let compileflag ." -fopenmp "  
  390.     endif  
  391.     if search("math.h") != 0  
  392.         let compileflag ." -lm "  
  393.     endif  
  394.     exec compilecmd." % ".compileflag  
  395. endfunc  
  396.    
  397. func! RunPython()  
  398.         exec "!python %"  
  399. endfunc  
  400. func! CompileJava()  
  401.     exec "!javac %"  
  402. endfunc  
  403.    
  404.    
  405. func! CompileCode()  
  406.         exec "w"  
  407.         if &filetype == "cpp"  
  408.                 exec "call CompileGpp()"  
  409.         elseif &filetype == "c"  
  410.                 exec "call CompileGcc()"  
  411.         elseif &filetype == "python"  
  412.                 exec "call RunPython()"  
  413.         elseif &filetype == "java"  
  414.                 exec "call CompileJava()"  
  415.         endif  
  416. endfunc  
  417.    
  418. func! RunResult()  
  419.         exec "w"  
  420.         if search("mpi.h") != 0  
  421.             exec "!mpirun -np 4 ./%<"  
  422.         elseif &filetype == "cpp"  
  423.             exec "! ./%<"  
  424.         elseif &filetype == "c"  
  425.             exec "! ./%<"  
  426.         elseif &filetype == "python"  
  427.             exec "call RunPython"  
  428.         elseif &filetype == "java"  
  429.             exec "!java %<"  
  430.         endif  
  431. endfunc  
  432.    
  433. map     <F5>            :call CompileCode()<CR>  
  434. imap    <F5>            <ESC>:call CompileCode()<CR>  
  435. map     <F6>             :call RunResult()<CR>  
  436.   
  437. " 自动补齐功能,需要先安装neocomplcache  
  438. let g:neocomplcache_enable_at_startup = 1   
  439.   
  440. imap    <F4>    <ESC>:A<CR>i  
  441. nmap    <F4>    :A<CR>  

抱歉!评论已关闭.