热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

打造适合自己的VIM设置

经过3天的煎熬,找各种资料终于弄了个基本的符合自己vim配置。这篇文章以后会不定时更新。用到的插件:a.vimbufexplorer.vimcolor_sample_pack.vimcsExplorer.vimDoxygenToolkit.vimgenutils.vimlistlookupfile.vimmark.vi

经过3天的煎熬,找各种资料终于弄了个基本的符合自己vim配置。

这篇文章以后会不定时更新。

用到的插件:

a.vim      

bufexplorer.vim        

color_sample_pack.vim     

csExplorer.vim                  

DoxygenToolkit.vim           

genutils.vim   

list  

lookupfile.vim                   

mark.vim                          

minibufexpl.vim                

NERD_commenter.vim     

NERD_tree.vim  

project.vim                      

ShowFunc.vim                 

taglist.vim                       

winfileexplorer.vim          

winmanager.vim  

wintagexplorer.vim  

vimrc文件:

"display the cursor  

"set ruler  

set nocp  

filetype plugin on  

" detect the filetype  

" this sentence eq   filetype on, filetype plugin on, filetype indent on  

filetype plugin indent on  

set nocompatible  

set foldmethod=syntax  

"set color display  

set t_Co=256  

"Set mapleader  

"when use just in normal mode type ,ee   

let mapleader = ","  

"Fast reloading of the .vimrc  

map  ss :source ~/.vimrc  

"Fast editing of .vimrc  

map  ee :e ~/.vimrc  

"When .vimrc is edited, reload it  

autocmd! bufwritepost .vimrc source ~/.vimrc  

""""""""""""""""""""""""""""  

"     MiniBufferExplorer   "  

""""""""""""""""""""""""""""  

let g:miniBufExplMapWindowNavVim=1  

let g:miniBufExplMapWindowNavArrows=1  

let g:miniBufExplMapCTabSwitchBufs=1  

"let g:miniBufExplModSelTarget=1   

"进行Taglist的设置  

"TlistUpdate可以更新tags  

map  :silent! Tlist  

"按下F3就可以呼出了  

let Tlist_Ctags_Cmd='/usr/bin/ctags'   

"因为我们放在环境变量里,所以可以直接执行  

let Tlist_Use_Right_Window=1  

"让窗口显示在右边,0的话就是显示在左边  

let Tlist_Show_One_File=1  

"让taglist可以同时展示多个文件的函数列表  

let Tlist_File_Fold_Auto_Close=1  

"非当前文件,函数列表折叠隐藏  

let Tlist_Exit_OnlyWindow=1  

"当taglist是最后一个分割窗口时,自动推出vim  

"是否一直处理tags.1:处理;0:不处理  

let Tlist_Process_File_Always=0  

"不是一直实时更新tags,因为没有必要  

let Tlist_Inc_Winwidth=0  

"设置字体  

"set guifOnt=DejaVu\ Sans\ Mono\ 10  

set guifOnt=Consolas\ 11  

" 开启语法高亮  

syntax enable  

syntax on  

"设置了在窗口右侧何处开始换行没有\n符号,textwidth有\n  

set wrapmargin=10  

"在代码使用4个空格代替TAB符  

autocmd FileType c,cpp,py set shiftwidth=4 | set expandtab  

"zzg added   

"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]  

"set laststatus=2  

"imap  :wa  

set shiftwidth=4  

"set indent length  

set expandtab  

" set use a series of backspaces to  replace tab  

set tabstop=4  

" set when press a tab how many backspaces will skip  

"关闭vi兼容模式  

"set nocp  

" 自动切换目录  

set autochdir  

" 打开行号显示  

set nu  

" 设置文字编码自动识别  

set fencs=utf-8,cp936  

" 使用鼠标  

set mouse=a  

" 设置高亮搜索  

set hlsearch  

" 设置代码折叠  

"set fdm=indent  

"set foldmethod=syntax  

"autocmd FileType c,cpp  setl fdm=syntax | setl fen   

" 输入字符串就显示匹配点  

set incsearch  

" 输入的命令显示出来,看的清楚些。  

set showcmd  

" 选择配色方案  

"hi Nomal ctermfg=Grey ctermbg=Black  

colorscheme darkburn  

"colorscheme darkblue  

"colorscheme morning  

""""""""""""""""""""""""""""""  

" BufExplorer  

""""""""""""""""""""""""""""""  

"let g:bufExplorerDefaultHelp=0       " Do not show default help.  

"let g:bufExplorerShowRelativePath=1  " Show relative paths.  

"let g:bufExplorerSortBy='mru'        " Sort by most recently used.  

"let g:bufExplorerSplitRight=0        " Split left.  

"let g:bufExplorerSplitVertical=1     " Split vertically.  

"let g:bufExplorerSplitVertSize=30    " Split width  

"let g:bufExplorerUseCurrentWindow=1  " Open in new window.  

"autocmd BufWinEnter \[Buf\ List\] setl nonumber   

"打开当前目录文件列表  

""""""""""""""""""""""""""""""  

" netrw setting  

""""""""""""""""""""""""""""""  

let g:netrw_winsize = 30  

nmap  fe :Sexplore!   

let g:LookupFile_TagExpr = '"./filenametags"'   

"""""""""""""""""""""""""""""  

" WinManager setting  

"""""""""""""""""""""""""""""  

let g:winManagerWindowLayout = "FileExplorer|TagList"  

let g:winManagerWidth = 30  

let g:defaultExplorer = 0  

nmap  :FirstExplorerWindow  

nmap  :BottomExplorerWindow  

nmap  wm :WMToggle  

""""""""""""""""""""""""""""""  

" lookupfile setting  

""""""""""""""""""""""""""""""  

let g:LookupFile_MinPatLength = 2               "最少输入2个字符才开始查找  

let g:LookupFile_PreserveLastPattern = 0        "不保存上次查找的字符串  

let g:LookupFile_PreservePatternHistory = 1     "保存查找历史  

let g:LookupFile_AlwaysAcceptFirst = 1          "回车打开第一个匹配项目  

let g:LookupFile_AllowNewFiles = 0              "不允许创建不存在的文件  

if filereadable("./filenametags")                "设置tag文件的名字  

let g:LookupFile_TagExpr = '"./filenametags"'  

endif  

"映射LookupFile为,lk  

nmap  lk :LUTags  

"映射LUBufs为,ll  

nmap  ll :LUBufs  

"映射LUWalk为,lw  

nmap  lw :LUWalk  

" lookup file with ignore case  

function! LookupFile_IgnoreCaseFunc(pattern)  

    let _tags = &tags  

    try  

        let &tags = eval(g:LookupFile_TagExpr)  

        let newpattern = '\c' . a:pattern  

        let tags = taglist(newpattern)  

    catch  

        echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE  

        return ""  

    finally  

        let &tags = _tags  

    endtry  

    " Show the matches for what is typed so far.  

    let files = map(tags, 'v:val["filename"]')  

    return files  

endfunction  

let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc'   

""""""""""""""""""""""""""""""  

" mark setting  

""""""""""""""""""""""""""""""  

nmap  hl MarkSet  

vmap  hl MarkSet  

nmap  hh MarkClear  

vmap  hh MarkClear  

nmap  hr MarkRegex  

vmap  hr MarkRegex   

"Quickfix hotkey  

autocmd FileType c,cpp  map   :w:make  

nmap cn :cn  

nmap cp :cp  

nmap cw :cw 10   

"在当前文件中快速查找光标下的单词:   

nmap lv :lv /=expand("")/ %:lw   

map  :call Do_CsTag()  

nmap s :cs find s =expand(""):copen  

nmap g :cs find g =expand("")  

nmap c :cs find c =expand(""):copen  

nmap t :cs find t =expand(""):copen  

nmap e :cs find e =expand(""):copen  

nmap f :cs find f =expand(""):copen  

nmap i :cs find i ^=expand("")$:copen  

nmap d :cs find d =expand(""):copen  

function Do_CsTag()  

    let dir = getcwd()  

    if filereadable("tags")  

        if(g:iswindows==1)  

            let tagsdeleted=delete(dir."\\"."tags")  

        else  

            let tagsdeleted=delete("./"."tags")  

        endif  

        if(tagsdeleted!=0)  

            echohl WarningMsg | echo "Fail to do tags! I cannot delete the tags" | echohl None  

            return  

        endif  

    endif  

    if has("cscope")  

        silent! execute "cs kill -1"  

    endif  

    if filereadable("cscope.files")  

        if(g:iswindows==1)  

            let csfilesdeleted=delete(dir."\\"."cscope.files")  

        else  

            let csfilesdeleted=delete("./"."cscope.files")  

        endif  

        if(csfilesdeleted!=0)  

            echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.files" | echohl None  

            return  

        endif  

    endif  

    if filereadable("cscope.out")  

        if(g:iswindows==1)  

            let csoutdeleted=delete(dir."\\"."cscope.out")  

        else  

            let csoutdeleted=delete("./"."cscope.out")  

        endif  

        if(csoutdeleted!=0)  

            echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.out" | echohl None  

            return  

        endif  

    endif  

    if(executable('ctags'))  

        "silent! execute "!ctags -R --c-types=+p --fields=+S *"  

        silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."  

    endif  

    if(executable('cscope') && has("cscope") )  

        if(g:iswindows!=1)  

            silent! execute "!find . -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.cs' > cscope.files"  

        else  

            silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"  

        endif  

        silent! execute "!cscope -b"  

        execute "normal :"  

        if filereadable("cscope.out")  

            execute "cs add cscope.out"  

        endif  

    endif  

endfunction  

" OmniCppComplete  

let OmniCpp_NamespaceSearch = 1  

let OmniCpp_GlobalScopeSearch = 1  

let OmniCpp_ShowAccess = 1  

let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters  

let OmniCpp_MayCompleteDot = 1 " autocomplete after .  

let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->  

let OmniCpp_MayCompleteScope = 1 " autocomplete after ::  

let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]  

" automatically open and close the popup menu / preview window  

autocmd CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif  

" set something for ominicomplete  

set completeopt=longest,menu   

"对NERD_commenter的设置  

let NERDShutUp=1  

map fg :Dox  

let g:DoxygenToolkit_authorName="zzg"  

let g:DoxygenToolkit_licenseTag="My own license\"  

let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK"  

let g:DoxygenToolkit_briefTag_pre = "@brief\t"  

let g:DoxygenToolkit_paramTag_pre = "@param\t"  

let g:DoxygenToolkit_returnTag = "@return\t"  

let g:DoxygenToolkit_briefTag_funcName = "no"  

let g:DoxygenToolkit_maxFunctionProtoLines = 30  

" mapping omini  

inoremap         pumvisible()?"\":"\"  

inoremap        pumvisible()?"\\\":"\"  

inoremap        pumvisible()?"\\\":"\"  

inoremap        pumvisible()?"\":"\"   

set tags+=~/.vim/stl_tags  

"set paste  if set this the omnicomplete will not work   

"remember to the last position you edit zzg  

if has("autocmd")  

       autocmd BufRead *.txt set tw=78  

       autocmd BufReadPost *  

        \ if line("'\"") > 0 && line ("'\"") <= line("$") |  

        \   exe "normal g'\"" |  

        \ endif  

endif  

总结一下安装过程中遇到的问题:

   安装ctags由于以前安装过emacs,所以有了emacs的ctags,我误以为是exburant ctags已经安装了,结果错了很长时间,要安装Exburant ctags,也就是正常情况下的ctags。

   安装cscope时make错误,就没安,继续往下,但是cpp的自动补全不好使。后来查到cscope缺少的相关软件有:

   bison , flex  lib curses-dev 什么的

   用 apt-cache search keywords 就能找到了.然后再安装对应的包就行了。

最后设置vim下用256色,并用了一个非常好看的颜色主题:darkburn.vim


推荐阅读
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
author-avatar
永川青峰_915
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有