免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: rain_fish
打印 上一主题 下一主题

使用vim进行编程开发(持续更新) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-05-08 16:28 |只看该作者
把.vimrc再贴出来,里面有很多没有注释,在网上可以查到含义,我这里就不多说了
  1. set nocp
  2. set tabstop=4
  3. set softtabstop=4
  4. set shiftwidth=4
  5. set autoindent
  6. set autowrite
  7. set hidden
  8. set cindent
  9. set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
  10. set nu
  11. "set mouse=a
  12. set cscopequickfix=s-,c-,d-,i-,t-,e-
  13. syntax enable
  14. syntax on
  15. "show cur file name
  16. set statusline+=%f 
  17. set ruler
  18. "光标在窗口上下边界时距离边界7行即开始滚屏
  19. set so=7
  20. "显示匹配括号
  21. set showmatch

  22. "high light
  23. set hlsearch

  24. "auto fold
  25. set fdm=syntax
  26. set nofen
  27. "
  28. " 在搜索的时候忽略大小写
  29. set ignorecase
  30. "set bg=dark
  31. "colorscheme darkblue_my
  32. "colorscheme desertEx_my
  33. colorscheme vc_my
  34. "highlight Functions
  35. syn match cFuntions display "[a-zA-Z_]\{-1,}\s\{-0,}(\{1}"ms=s,me=e-1
  36. "hi def link cFuntions Title

  37. "autosave
  38. "au VimLeave * mksession! ~/.vim/session/workspace.session
  39. "au VimLeave * wviminfo! ~/.vim/session/workspace.viminfo


  40. "taglist
  41. let Tlist_Show_One_File=1
  42. let Tlist_Exit_OnlyWindow=1

  43. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  44. " cscope setting
  45. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  46. if has("cscope")
  47.         set csprg=/usr/bin/cscope
  48.         set csto=1
  49.         set cst
  50.         set nocsverb
  51.         "add any database in current directory
  52.         if filereadable("cscope.out")
  53.                 cs add cscope.out
  54.         endif
  55.         set csverb
  56. endif

  57. if filereadable("tags")
  58.         set tags+=tags
  59. endif

  60. if filereadable("~/.vim/tags/cpp")
  61.         set tags+=~/.vim/tags/cpp
  62. endif

  63. nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
  64. nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
  65. nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
  66. nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
  67. nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
  68. nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
  69. nmap <C-\>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
  70. nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>

  71. "QuickFix
  72. nmap <F6> :cw<cr>
  73. nmap <F7> :cn<cr>
  74. nmap <F8> :cp<cr>

  75. syntax enable
  76. syntax on
  77. set backspace=indent,eol,start

  78. "Set mapleader                              
  79. let mapleader = ","                          

  80. "Fast reloading of the .vimrc               
  81. map <silent> <leader>ss :source ~/.vimrc<cr>
  82. "Fast editing of .vimrc                     
  83. map <silent> <leader>ee :e ~/.vimrc<cr>      
  84. "When .vimrc is edited, reload it            
  85. autocmd! bufwritepost .vimrc source ~/.vimrc

  86. "TagList
  87. let Tlist_Ctags_Cmd = '/usr/bin/ctags' "设定linux系统中ctags程序的位置
  88. let Tlist_Show_One_File = 1            "不同时显示多个文件的tag,只显示当前文件的
  89. let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim
  90. "let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist窗口
  91. "使用<F11>键就可以打开/关闭taglist窗口
  92. "map <silent> <F11> :TlistToggle<cr>

  93. """"""""""""""""""""""""""""""
  94. " netrw setting
  95. """"""""""""""""""""""""""""""
  96. "let g:netrw_winsize = 30
  97. "nmap <silent> <leader>fe :Sexplore!<cr>

  98. """"""""""""""""""""""""""""""
  99. " winManager setting
  100. """"""""""""""""""""""""""""""
  101. let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
  102. let g:winManagerWidth = 30
  103. let g:defaultExplorer = 0
  104. "nmap <C-W><C-F> :FirstExplorerWindow<cr>
  105. "nmap <C-W><C-B> :BottomExplorerWindow<cr>
  106. nmap <F3> :FirstExplorerWindow<cr>
  107. nmap <F4> :BottomExplorerWindow<cr>
  108. "nmap <silent> <leader>wm :WMToggle<cr>
  109. nmap wm :WMToggle<cr>

  110. """"""""""""""""""""""""""""""
  111. " BufExplorer
  112. """"""""""""""""""""""""""""""
  113. let g:bufExplorerDefaultHelp=0       " Do not show default help.
  114. let g:bufExplorerShowRelativePath=1  " Show relative paths.
  115. let g:bufExplorerSortBy='mru'        " Sort by most recently used.
  116. let g:bufExplorerSplitRight=0        " Split left.
  117. let g:bufExplorerSplitVertical=1     " Split vertically.
  118. let g:bufExplorerSplitVertSize = 30  " Split width
  119. let g:bufExplorerUseCurrentWindow=1  " Open in new window.
  120. autocmd BufWinEnter \[Buf\ List\] setl nonumber

  121. """"""""""""""""""""""""""""""
  122. " lookupfile setting
  123. " """"""""""""""""""""""""""""""
  124. let g:LookupFile_MinPatLength = 2
  125. let g:LookupFile_PreserveLastPattern = 0
  126. let g:LookupFile_PreservePatternHistory = 0
  127. let g:LookupFile_AlwaysAcceptFirst = 1
  128. let g:LookupFile_AllowNewFiles = 0
  129. let g:LookupFile_UsingSpecializedTags = 1
  130. let g:LookupFile_Bufs_LikeBufCmd = 0
  131. let g:LookupFile_ignorecase = 1
  132. let g:LookupFile_smartcase = 1
  133. if filereadable("./filenametags")
  134.         let g:LookupFile_TagExpr = '"./filenametags"'
  135. endif
  136. nmap <silent> <leader>lk :LUTags<cr>
  137. nmap <silent> <leader>ll :LUBufs<cr>
  138. nmap <silent> <leader>lw :LUWalk<cr>
  139. "
  140. "
  141. " lookup file with ignore case
  142. function! LookupFile_IgnoreCaseFunc(pattern)
  143.         let _tags = &tags
  144.         try
  145.                 let &tags = eval(g:LookupFile_TagExpr)
  146.                 let newpattern = '\c' . a:pattern
  147.                 let tags = taglist(newpattern)
  148.         catch
  149.                 echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE
  150.                 return ""
  151.         finally
  152.                 let &tags = _tags
  153.         endtry

  154.         " Show the matches for what is typed so far.
  155.         let files = map(tags, 'v:val["filename"]')
  156.         return files
  157. endfunction
  158. let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc'

  159. "autocomplete
  160. filetype plugin indent on
  161. set completeopt=longest,menu
  162. "set nocp
  163. "filetype plugin on
  164. " mapping
  165. inoremap <expr> <CR>       pumvisible()?"\<C-Y>":"\<CR>"
  166. inoremap <expr> <C-J>      pumvisible()?"\<PageDown>\<C-N>\<C-P>":"\<C-X><C-O>"
  167. inoremap <expr> <C-K>      pumvisible()?"\<PageUp>\<C-P>\<C-N>":"\<C-K>"
  168. inoremap <expr> <C-U>      pumvisible()?"\<C-E>":"\<C-U>"
  169. autocmd FileType c,cpp set shiftwidth=4 | set expandtab
  170. let g:SuperTabRetainCompletionType = 2
  171. "let g:SuperTabDefaultCompletionType = "<C-X><C-O>"

  172. " OmniCppComplete
  173. let OmniCpp_NamespaceSearch = 1
  174. let OmniCpp_GlobalScopeSearch = 1
  175. let OmniCpp_ShowAccess = 1
  176. let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
  177. let OmniCpp_MayCompleteDot = 1 " autocomplete after .
  178. let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
  179. let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
  180. let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
  181. " automatically open and close the popup menu / preview window
  182. au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
  183. set completeopt=menuone,menu,longest,preview
  184. map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

  185. ".h <---> .cpp
  186. nnoremap <silent> <F12> :A<CR>

  187. if &term =~ "xterm"
  188.         if has("terminfo")
  189.                 set t_Co=8
  190.                 set t_Sf=<Esc>[3%p1%dm
  191.                 set t_Sb=<Esc>[4%p1%dm
  192.         else
  193.                 set t_Co=8
  194.                 set t_Sf=<Esc>[3%dm
  195.                 set t_Sb=<Esc>[4%dm
  196.         endif
  197. endif

  198. " execute project related configuration in current directory
  199. if filereadable("workspace.vim")
  200.         source workspace.vim
  201. endif

复制代码

论坛徽章:
0
12 [报告]
发表于 2010-05-08 16:53 |只看该作者
第一节        保存已打开的文件
平时对项目进行开发时,会打开很多用得到的文件,但是下班时需要关闭,第二天再工
作时,又需要重新打开需要的文件,很是麻烦。今天我介绍一个保存以前打开文件的办法,而且是在项目工程目录下执行vim文件才打开以前这个工程打开的文件,不在这个目录下,不会打开。
        在我的.vimrc中有这个一句话:
" execute project related configuration in current directory
if filereadable("workspace.vim")
        source workspace.vim
endif

即打开vim时,查看当前目录是否有workspace.vim,如果有,装载。那么workspace.vim中的内容是什么呢?
将下面的内容命名为workspace.vim保存在工程目录下。
  1. "autosave
  2. au VimLeave * mksession! workspace.session
  3. au VimLeave * wviminfo! workspace.viminfo


  4. if filereadable("workspace.use")
  5. if filereadable("workspace.session")
  6.         source workspace.session
  7. endif

  8. if filereadable("workspace.viminfo")
  9.         rviminfo workspace.viminfo
  10. endif
  11. endif
复制代码
其中
"autosave
au VimLeave * mksession! workspace.session
au VimLeave * wviminfo! workspace.viminfo
表示当退出vim时自动保存vim当前打开的信息。

#如果存在workspace.use文件
if filereadable("workspace.use")
#如果存在workspace.session
if filereadable("workspace.session")
#装载
        source workspace.session
endif

#如果存在workspace.viminfo
if filereadable("workspace.viminfo")
#读取workspace.viminfo
        rviminfo workspace.viminfo
endif
endif

其中workspace.use作用类似总开关,如果没有这个文件,在该工程目录下执行vim时不会装载上一次的文件。
很简单吧。

workspace.vim.rar

213 Bytes, 下载次数: 32

论坛徽章:
0
13 [报告]
发表于 2010-05-08 17:03 |只看该作者
用 emacs 的来鄙视一下 vim

论坛徽章:
0
14 [报告]
发表于 2010-05-08 17:45 |只看该作者
各有所长,各有所短,熟悉任何一个都可以

论坛徽章:
0
15 [报告]
发表于 2010-05-09 17:48 |只看该作者
路过顶下

菜鸟路过

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
16 [报告]
发表于 2010-05-09 18:34 |只看该作者
持续更新个毛。
自己还没学会,就在这里持续更新了。

论坛徽章:
0
17 [报告]
发表于 2010-05-09 18:56 |只看该作者
回复 16# flw


    呵呵,这位朋友提醒的对,我确实还不敢说精通vim,也只是会用一些简单的插件,也确实是在学习的过程中,正因为如此,我才会持续更新,在使用的遇到的问题并解决后都会写出来,当然对于高手来说,这里面确实都不值得一看,供初学者参考。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2010-05-09 19:21 |只看该作者
习不是这样学的,你好好反省反省。
祝你早日“放弃”。

论坛徽章:
0
19 [报告]
发表于 2010-05-09 20:21 |只看该作者
回复 18# flw


    谢谢提醒,学习本身就是在逐步探讨过程中,学习方法也是的,我会注意的,非常感谢!

论坛徽章:
0
20 [报告]
发表于 2010-05-09 20:23 |只看该作者
第二节        使用winmanager和bufexplorer进行多个文件编辑

把第一楼中附件的.vim文件夹放到用户目录下,如果~/下就已经有.vim文件夹的话,
记得备份。完成后里面已经这两个插件了。
        首先快捷键wm会打开缓冲区和文件中对应的函数。F3,F4是定位到bufexplorer和winmanager,操作比较简单,就不详细描述了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP