c++ vim编译环境的搭建_ubuntu vim 搭建c/c++开发环境 - CSDN
  • vim的配置基本学习资料不是非常了解vim的配置的可以参考下面资料: https://github.com/int32bit/use_vim_as_ide vim的安装vim的安装最好是上github或者官网下载安装, 直接使用apt-get等方式安装的有可能是阉割版...

    vim的配置基本学习资料

    不是非常了解vim的配置的可以参考下面资料:
    https://github.com/int32bit/use_vim_as_ide

    vim的安装

    vim的安装最好是上github或者官网下载安装, 直接使用apt-get等方式安装的有可能是阉割版导致不支持python等,会使得部分插件无法使用.

    最新版vim 8.0的安装:

    从github获取vim

     git clone https://github.com/vim/vim.git 

    如果获取了一段时间后没有安装,可以更新vim

    cd vim
    git pull

    进入安装目录

    cd src
    make distclean #如果你以前编译过Vim

    设置vim添加python支持

    ./configure --with-features=huge --enable-python3interp --enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu/ --enable-rubyinterp --enable-luainterp --enable-perlinterp --with-python3-config-dir=/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu/ --enable-multibyte --enable-cscope      --prefix=/usr/local/vim/

    编译安装

    make
    sudo make install

    参考博文: https://www.cnblogs.com/DillGao/p/6268165.html



    使用vundle进行插件管理

    vundle是一个插件管理器,vim上的所有额外功能都是由插件提供的,在安装众多插件的时候要先下载vundle后, 就可以批量安装管理插件了

    vundle安装
    ( 确保~/.vim/bundle路径存在,不存在则建立)

    $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim  

    修改配置文件~/.vimrc如下

    
    " ***************** 全局设置 ************** "
    "保持文件上次打开的位置
    au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
    
    " 开启文件类型侦测
    filetype on
    " 根据侦测到的不同类型加载对应的插件
    filetype plugin on
    
    " 自动缩进
    filetype indent on
    
    " 开启语法高亮功能
    syntax enable
    " 允许用指定语法高亮配色方案替换默认方案
    syntax on
    
    set nocompatible "关闭兼容模式
    set incsearch "开启实时搜索功能
    set ignorecase "搜索忽略大小写
    set wildmenu "vim命令自动补全
    set autoread "文件自动更新
    set gcr=a:block-blinkon0 "禁止关闭闪烁
    set laststatus=2 "总是显示状态栏
    set ruler "显示光标位置
    set number "显示行号
    set cursorline "高亮显示当前行
    "set cursorcolumn "高亮显示当前列
    set hlsearch "高亮显示搜索结果
    " set nowrap "禁止折行
    set backspace=2 "回退键生效
    "set backspace=indent,eol,start
    set novisualbell
    
    " 禁止显示滚动条
    set guioptions-=l
    set guioptions-=L
    set guioptions-=r
    set guioptions-=R
    
    " 禁止显示菜单和工具条
    set guioptions-=m
    set guioptions-=T
    
    " 将制表符扩展为空格
    set expandtab
    " 设置编辑时制表符占用空格数
    set tabstop=4
    " 设置格式化时制表符占用空格数
    set shiftwidth=4
    " 让 vim 把连续数量的空格视为一个制表符
    set softtabstop=4
    " 基于缩进或语法进行代码折叠
    set foldmethod=syntax
    " 启动 vim 时关闭折叠代码
    set nofoldenable
    " 交互式打开shell
    set shell=bash\ -i
    
    
    " *************** 设置全局快捷键 *****************
    
    " 定义快捷键的前缀,即<Leader>
    "let mapleader="\<space>"
    let mapleader="'"
    
    " 设置快捷键将选中文本块复制至系统剪贴板
    vnoremap <Leader>y "+y
    
    " 设置快捷键将系统剪贴板内容粘贴至 vim
    nmap <Leader>p "+p
    
    " 定义快捷键关闭当前分割窗口
    nmap <Leader>q :q<CR>
    
    " 定义快捷键保存当前窗口内容
    nmap <Leader>w :w<CR>
    
    " 定义快捷键保存所有窗口内容并退出 vim
    "nmap <Leader>WQ :wa<CR>:q<CR>
    
    " 不做任何保存,直接退出 vim
    
    " YCM 补全菜单配色
    " 菜单
    "highlight Pmenu ctermfg=2 ctermbg=3 guifg=#005f87 guibg=#EEE8D5
    " 选中项
    "highlight PmenuSel ctermfg=2 ctermbg=3 guifg=#AFD700 guibg=#106900
    "设置ycm的pyhton编译器
    let g:ycm_server_python_interpreter='/usr/bin/python'
    
    " 补全功能在注释中同样有效
    let g:ycm_complete_in_comments=1
    " 允许 vim 加载 .ycm_extra_conf.py 文件,不再提示
    let g:ycm_confirm_extra_conf=0
    " 开启 YCM 标签补全引擎
    let g:ycm_collect_identifiers_from_tags_files=1
    " 引入 C++ 标准库tags
    set tags+=/data/misc/software/misc./vim/stdcpp.tags
    " YCM 集成 OmniCppComplete 补全引擎,设置其快捷键
    "inoremap <leader>; <C-x><C-o>
    " 补全内容不以分割子窗口形式出现,只显示补全列表
    set completeopt-=preview
    " 从第一个键入字符就开始罗列匹配项
    let g:ycm_min_num_of_chars_for_completion=1
    " 禁止缓存匹配项,每次都重新生成匹配项
    let g:ycm_cache_omnifunc=0
    " 语法关键字补全
    let g:ycm_seed_identifiers_with_syntax=1
    let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
    "let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
    
    
    """ color settings
    """ Solarized """  
    "let g:solarized_termcolors=16 
    set t_Co=256
    if has("gui_running")
        set guioptions=gR
        set mousemodel=popup
        set background=light
        ""hi LineNr cterm=bold guibg=black guifg=white
        ""hi CursorLine cterm=none ctermbg=lightgray ctermfg=none
        ""hi CursorColumn cterm=none ctermbg=lightgray ctermfg=none
    else
        set background=dark
        ""hi LineNr cterm=bold ctermbg=black ctermfg=white
        ""hi CursorLine cterm=none ctermbg=darkgray ctermfg=none
        ""hi CursorColumn cterm=none ctermbg=darkgray ctermfg=none
    endif
    colorscheme solarized
    "colorscheme default
    
    " indent guides
    "let g:indent_guides_enable_on_vim_startup=1
    " 从第二层开始可视化显示缩进
    let g:indent_guides_start_level=2
    "let g:indent_guides_auto_colors = 0
    "hi IndentGuidesOdd  guibg=red   ctermbg=3
    "hi IndentGuidesEven guibg=green ctermbg=4
    " 色块宽度
    let g:indent_guides_guide_size=1
    " 快捷键 i 开/关缩进可视化
    noremap <Leader>sj :IndentGuidesToggle<CR>
    "nmap <Leader>Q :qa!<CR>
    
    " syntastic
    "syntastic
    "设置error和warning的标志
    let g:syntastic_enable_signs = 1
    let g:syntastic_error_symbol='✗'
    let g:syntastic_warning_symbol='►'
    "总是打开Location List(相当于QuickFix)窗口,如果你发现syntastic因为与其他插件冲突而经常崩溃,将下面选项置0
    let g:syntastic_always_populate_loc_list = 1
    "自动打开Locaton List,默认值为2,表示发现错误时不自动打开,当修正以后没有再发现错误时自动关闭,置1表示自动打开自动关闭,0表示关闭自动打开和自动关闭,3表示自动打开,但不自动关闭
    let g:syntastic_auto_loc_list = 1
    "修改Locaton List窗口高度
    let g:syntastic_loc_list_height = 5
    "打开文件时自动进行检查
    let g:syntastic_check_on_open = 1
    "自动跳转到发现的第一个错误或警告处
    let g:syntastic_auto_jump = 1
    "进行实时检查,如果觉得卡顿,将下面的选项置为1
    let g:syntastic_check_on_wq = 0
    "高亮错误
    let g:syntastic_enable_highlighting=1
    "让syntastic支持C++11
    let g:syntastic_cpp_checkers = ['g++']
    let g:syntastic_cpp_compiler = 'g++'
    let g:syntastic_cpp_compiler_options = '-std=c++11'
    "设置pyflakes为默认的python语法检查工具
    let g:syntastic_python_checkers = ['pyflakes']
    "修复syntastic使用:lnext和:lprev出现的跳转问题,同时修改键盘映射使用sn和sp进行跳转
    function! <SID>LocationPrevious()                       
      try                                                   
        lprev                                               
      catch /^Vim\%((\a\+)\)\=:E553/                        
        llast                                               
      endtry                                                
    endfunction                                             
    function! <SID>LocationNext()                           
      try                                                   
        lnext                                               
      catch /^Vim\%((\a\+)\)\=:E553/                        
        lfirst                                              
      endtry                                                
    endfunction                                             
    nnoremap <silent> <Plug>LocationPrevious    :<C-u>exe 'call <SID>LocationPrevious()'<CR>                                        
    nnoremap <silent> <Plug>LocationNext        :<C-u>exe 'call <SID>LocationNext()'<CR>
    nmap <silent> sp    <Plug>LocationPrevious              
    nmap <silent> sn    <Plug>LocationNext
    "关闭syntastic语法检查, 鼠标复制代码时用到, 防止把错误标志给复制了
    nnoremap <silent> <Leader>ec :SyntasticToggleMode<CR>
    function! ToggleErrors()
        let old_last_winnr = winnr('$')
        lclose
        if old_last_winnr == winnr('$')
            " Nothing was closed, open syntastic error location panel
            Errors
        endif
    endfunction
    
    
    
    
    
    " 依次遍历子窗口
    nnoremap nw <C-W><C-W>
    
    " 跳转至右方的窗口
    nnoremap <Leader>l <C-W>l
    
    " 跳转至左方的窗口
    nnoremap <Leader>h <C-W>h
    
    " 跳转至上方的子窗口
    nnoremap <Leader>k <C-W>k
    
    " 跳转至下方的子窗口
    nnoremap <Leader>j <C-W>j
    
    " 定义快捷键在结对符之间跳转
    nmap <Leader>M %
    
    nnoremap <Leader>g <C-]>
    nnoremap <Leader>b <C-t>
    
    " ************** 插件管理与设置 ************ "
    
    " vundle 环境设置
    filetype off
    set rtp+=~/.vim/bundle/Vundle.vim
    " vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
    call vundle#begin()
    Plugin 'VundleVim/Vundle.vim'
    Plugin 'Lokaltog/vim-powerline' "status 美化
    Plugin 'octol/vim-cpp-enhanced-highlight' "对c++语法高亮增强
    Plugin 'kshenoy/vim-signature' "书签可视化的插件
    Plugin 'vim-scripts/BOOKMARKS--Mark-and-Highlight-Full-Lines' "书签行高亮
    Plugin 'majutsushi/tagbar' "taglist的增强版,查看标签,依赖于ctags
    Plugin 'scrooloose/nerdcommenter' "多行注释,leader键+cc生成, leader+cu删除注释
    Plugin 'scrooloose/nerdtree' "文件浏览
    Plugin 'Valloric/YouCompleteMe' "自动补全
    Plugin 'kien/ctrlp.vim' "搜索历史打开文件,在命令行模式下按ctrl+p触发
    Plugin 'vim-scripts/grep.vim' "在命令行模式使用grep命令,:Grep
    Plugin 'Lokaltog/vim-easymotion' "快速跳转,按两下leader键和f组合
    Plugin 'vim-scripts/ShowTrailingWhitespace.git' "高亮显示行尾的多余空白字符
    Plugin 'vim-scripts/indentpython.vim.git'
    Plugin 'vim-scripts/Solarized.git' "主题方案
    Plugin 'nathanaelkane/vim-indent-guides.git' "缩进对齐显示
    "Plugin 'vim-scripts/indexer.tar.gz' "自动生成标签
    "Plugin 'vim-scripts/DfrankUtil' "indexer 依赖
    "Plugin 'vim-scripts/vimprj' "indexer 依赖
    Plugin 'davidhalter/jedi-vim' "python 补全,不依赖于tags,但比较慢,可以使用indexer替换,但不能跳转项目外
    Plugin 'vim-scripts/Markdown'
    Plugin 'tpope/vim-surround'
    Plugin 'ekalinin/Dockerfile.vim'
    Plugin 'scrooloose/syntastic'  
    
    " 插件列表结束
    
    "call vundle#end()
    filetype on
    
    
    " Powerline 设置
    " 设置状态栏主题风格
    let g:Powerline_colorscheme='solarized256'
    
    " 设置tagbar
    " 设置 tagbar 子窗口的位置出现在主编辑区的左边
    let tagbar_left=1
    " " 设置显示/隐藏标签列表子窗口的快捷键。速记:identifier list by tag
    nnoremap <Leader>t :TagbarToggle<CR>
    " " 设置标签子窗口的宽度
    let tagbar_width=32
    " " tagbar 子窗口中不显示冗余帮助信息
    let g:tagbar_compact=1
    " " 设置 ctags 对哪些代码标识符生成标签
    
    " signature设置
    let g:SignatureMap = {
            \ 'Leader'             :  "m",
            \ 'PlaceNextMark'      :  "m,",
            \ 'ToggleMarkAtLine'   :  "m.",
            \ 'PurgeMarksAtLine'   :  "m-",
            \ 'DeleteMark'         :  "dm",
            \ 'PurgeMarks'         :  "mda",
            \ 'PurgeMarkers'       :  "m<BS>",
            \ 'GotoNextLineAlpha'  :  "']",
            \ 'GotoPrevLineAlpha'  :  "'[",
            \ 'GotoNextSpotAlpha'  :  "`]",
            \ 'GotoPrevSpotAlpha'  :  "`[",
            \ 'GotoNextLineByPos'  :  "]'",
            \ 'GotoPrevLineByPos'  :  "['",
            \ 'GotoNextSpotByPos'  :  "mn",
            \ 'GotoPrevSpotByPos'  :  "mp",
            \ 'GotoNextMarker'     :  "[+",
            \ 'GotoPrevMarker'     :  "[-",
            \ 'GotoNextMarkerAny'  :  "]=",
            \ 'GotoPrevMarkerAny'  :  "[=",
            \ 'ListLocalMarks'     :  "ms",
            \ 'ListLocalMarkers'   :  "m?"
            \ }
    
    " 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file list
    nmap <Leader>f :NERDTreeToggle<CR>
    " 设置NERDTree子窗口宽度
    let NERDTreeWinSize=32
    " 设置NERDTree子窗口位置
    let NERDTreeWinPos="right"
    " 显示隐藏文件
    let NERDTreeShowHidden=1
    " NERDTree 子窗口中不显示冗余帮助信息
    let NERDTreeMinimalUI=1
    " 删除文件时自动删除文件对应 buffer
    let NERDTreeAutoDeleteBuffer=1
    

    在vim的命令行模式下执行下列命令后,写在脚本中的插件就会被依次安装

    :BundleInstall

    代码补全的插件安装

    youcomplete作为一个代码补全插件,在安装过程中需要特殊的处理,以下是找到的一篇很好的教程:
    http://www.jianshu.com/p/d908ce81017a?nomobile=yes

    展开全文
  • 1. 配置GCC,LInux 在安装后已经有GCC了,但可能文件不全,我们可以利用 sudo apt-get install build-essential ...环境搭建完毕 写个C程序试试: hello.c 编译: gcc hello.c -o hello 得到编译后文件 ....

    1. 配置GCC,LInux 在安装后已经有GCC了,但可能文件不全,我们可以利用

    sudo apt-get install build-essential

    安装

     

    2. 安装文本编辑器

    sudo apt-get install vim

     

    环境搭建完毕

     

    写个C程序试试:

    hello.c

    编译: gcc hello.c -o hello

    得到编译后文件

    ./hello 执行程序

     

    C++

    g++ hello.cpp -o hello

    转载于:https://www.cnblogs.com/KennyRom/p/5990168.html

    展开全文
  • 用C/C++的人来说,很多人喜欢Emacs,据说与对Stallman的崇拜与爱屋及乌有关;-) 当然,Emacs与Vim虽然在文本编辑方面的性能 是等价的,但使用起来两者还是有很大的不同:Vim是为程序员而开发的,功能强大而...

    李若老师曾经说:世界上 的程序员分三种,一种是用Emacs,一种是用Vim的,其它的归为第三种。其意是说如果一个程序员两者都不用的话,那大抵是不能归为入流者行列的。对使 用C/C++的人来说,很多人喜欢Emacs,据说与对Stallman的崇拜与爱屋及乌有关;-) 当然,Emacs与Vim虽然在文本编辑方面的性能 是等价的,但使用起来两者还是有很大的不同:Vim是为程序员而开发的,功能强大而实用;Emacs除了文本编辑之外,作为Unix下的“第一个人工生 命”,还可以通过插件完成各种包括听mp3,发邮件,甚至煮咖啡的操作,所以,Emacs更像是一种“生活方式”。言归正传,我个人是用Vim的,在编写 C/C++的程序时,只用Vim自身的功能还是不太爽的,还需要其它的插件,将其构造成一个比VC爽得多的IDE。由于每个工具介绍清楚都不是一两句话说 得完的,以下只列出插件的名称,具体的内容google之即可;-)其中vim插件可以到VIMer最常去的www.vim.org 下载

    1. Ctags,非vim插件。Ctags是Vim必不可少的工具,它可以将C/C++的宏、变量、函数、类等一系列信息提取出来,以方便切换。Ctags还可以使用更强大的cscope代替。
    2. Taglist,Vim插件。Taglist是与ctags的配合的vim的强大工具之一,其功能是将当前buffer的所有信息作成一个列表放在旁边,随时可以切换。
    3. omnicppcomplete,Vim插件。其功能顾名思义就是自动补全工具(可不是简单的Ctrl+N哦),比如定义了一个类叫myClass,生成一个实例myClass c; 那么输入c.之后就可以出现一个框,里面是c所有的成员函数。
    4. csupport,Vim插件。这是一个非常好的C/C++ ide,有了它什么编译运行一键搞定,定义一个类一键就可以给出一个模板格式,相当实用。
    5. clewn, 非Vim插件。其用处是联结vim与gdb(没听说过gdb?google补个课吧~)。在打开clewn的时候,它利用NetBeans,把gVim与 gdb无缝地联结起来,还可以像matlab一样,在调试的时候把鼠标放在变量名上,就会有一个ballon出来显示这个变量的指,炫吧?谁说只有 emacs才能与gdb结合的好?另外它的另外一个替代品是VimGdb,这是个Vim插件。
    6. Doxygenkit。注释与文档合二为一的最强工具当然是Doxygen,有了Doxygenkit,用Vim写Doxygen格式一键搞定。

    至此,我定制的Vim的C/C++IDE就搞定了,用起来比VC那个真是爽不知多少倍了。除了以上的插件外,Vim常用的还有Vimshell,project等工具,都有很炫的效果,请各位VIMers 自己体会吧:)

    转自:http://earvinlin.spaces.live.com/blog/cns!5FA635E2BA4F9BB6!508.entry

    转载于:https://www.cnblogs.com/moiyer/archive/2010/03/29/1952686.html

    展开全文
  • 这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。vim中文帮助文档tar包下载地址

    转自:Figthing

    我的vim IDE界面:
      一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
    1、安装Vim和Vim基本插件
    首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:
    lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc
    其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。
    vim中文帮助文档tar包下载地址:
    http://sourceforge.net/projects/vimcdoc/files/vimcdoc/
    解压后其中有个doc文件夹, 将其中的内容全部复制到~/.vim/doc, 或者vim安装目录下的doc目录中, 此时vim中的help信息已经是中文的了.
    网页版中文帮助文档网址http://vimcdoc.sourceforge.net/doc/help.html
    首页就时vim帮助文档的目录,阅读起来更方便有效、更有针对性!
     
    2、Vim配置文件
    Vim强大的功能,其来源基本上就两个地方:Vim插件以及Vim配置文件。
    Vim 本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下。一般情况下,我们不会去改变这两个文件夹下的配置文件,而是 在用户文件夹/home/user(其中,user为用户名,我的用户名是lingd)下建立自己的配置文件。进入用户文件夹(/home/user/) 之后,用gedit新建一个名叫.vimrc的文件:
    lingd@ubuntu:~/arm$ cd ~
    lingd@ubuntu:~$ gedit .vimrc
    注:使用gedit主要是为了方便大段大段的文字粘贴!
    然后把下面的文字拷贝进这个文件之后保存:

    " This line should not be removed as it ensures that various options are
    " properly set to work with the Vim-related packages available in Debian.
    debian.vim

    " Uncomment the next line to make Vim more Vi-compatible
    " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
    " options, so any other options should be set AFTER setting 'compatible'.
    set nocompatible

    " Vim5 and later versions support syntax highlighting. Uncommenting the
    " following enables syntax highlighting by default.
    if has("syntax")
    syntax on " 语法高亮
    endif
    colorscheme ron " elflord ron peachpuff default 设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim72/colors目录下

    " detect file type
    filetype on
    filetype plugin on

    " If using a dark background within the editing area and syntax highlighting
    " turn on this option as well
    set background=dark

    " Uncomment the following to have Vim jump to the last position when
    " reopening a file
    if has("autocmd")
    au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
    "have Vim load indentation rules and plugins according to the detected filetype
    filetype plugin indent on
    endif

    " The following are commented out as they cause vim to behave a lot
    " differently from regular Vi. They are highly recommended though.

    "set ignorecase " 搜索模式里忽略大小写
    "set smartcase " 如果搜索模式包含大写字符,不使用 'ignorecase' 选项。只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用。
    set autowrite " 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:makeCTRL-] CTRL-^命令时进行;用 :bufferCTRL-OCTRL-I'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
    set autoindent " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
    "set smartindent " 智能对齐方式
    set tabstop=4 " 设置制表符(tab键)的宽度
    set softtabstop=4 " 设置软制表符的宽度
    set shiftwidth=4 " (自动) 缩进使用的4个空格
    set cindent " 使用 C/C++ 语言的自动缩进方式
    set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s "设置C/C++语言的具体缩进方式
    "set backspace=2 " 设置退格键可用
    set showmatch " 设置匹配模式,显示匹配的括号 set linebreak " 整词换行 set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去 "set hidden " Hide buffers when they are abandoned set mouse=a " Enable mouse usage (all modes) "使用鼠标 set number " Enable line number "显示行号 "set previewwindow " 标识预览窗口 set history=50 " set command history to 50 "历史记录50条 "--状态行设置-- set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行 set ruler " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。 "--命令行设置-- set showcmd " 命令行显示输入的命令 set showmode " 命令行显示vim当前模式 "--find setting-- set incsearch " 输入字符串就显示匹配点 set hlsearch

    注:配置文件中,以单个双引号开头的文字为注释。
    保存文件之后,启动Vim。此时,Vim已经是这种效果了(语法高亮挺漂亮的–这个是由vim-scripts中的插件支持的):

    3、ctags安装与配置
    ctags可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形
    以下是在ubuntu下ctags的下载安装和配置过程:
    下载并安装ctags,终端输入命令
    lingd@ubuntu:~/arm$ sudo apt-get install ctags
    建立源码索引,比如我经常需要查阅Linux的内核代码,而这些代码放在/home/lingd/arm/linux-2.6.24.7目录下
    那么在终端进入到该目录后,输入命令ctags -R *,你会发现多了一个tags文件,这个就是索引文件
    lingd@ubuntu:~/arm$ cd linux-2.6.24.7
    lingd@ubuntu:~/arm/linux-2.6.24.7$ ls
    arch     crypto         include  kernel       mm              samples   usr
    block    Documentation  init     lib          net             scripts
    COPYING  drivers        ipc      MAINTAINERS  README          security
    CREDITS  fs             Kbuild   Makefile     REPORTING-BUGS  sound
    lingd@ubuntu:~/arm/linux-2.6.24.7$ ctags -R *
    lingd@ubuntu:~/arm/linux-2.6.24.7$ ls
    arch     crypto         include  kernel       mm              samples   tags
    block    Documentation  init     lib          net             scripts   usr
    COPYING  drivers        ipc      MAINTAINERS  README          security
    CREDITS  fs             Kbuild   Makefile     REPORTING-BUGS  sound
    向vim注册索引文件tags的路径,
    lingd@ubuntu:~/arm/linux-2.6.24.7$ vi ~/.vimrc
    在打开文件的最后添加如下内容(当然,具体路径根据你自己的情况)

    "--ctags setting--
    " 按下F5重新生成tag文件,并更新taglist
    map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
    imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
    set tags=tags
    set tags+=./tags "add current directory's generated tags file
    set tags+=~/arm/linux-2.6.24.7/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)

    set tags+=./tags表示在当前工作目录下搜索tags文件
    set tags+=~/arm/linux-2.6.24.7/tags表示在搜寻tags文件的时候,也要搜寻~/arm/linux-2.6.24.7/文件夹下的tags文件。
    然后保存并退出vi。这样,你就可以用vim在任意地方查看有关Linux的函数原形
    ------------------------------------
    tag命令用法:
    Ctrl+]  跳到当前光标下单词的标签
    Ctrl+O  返回上一个标签
    Ctrl+T  返回上一个标签
    :tag TagName 跳到TagName标签
    以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置。如果不希望在当前窗口显示标签,可以使用以下命令:
    :stag TagName 新窗口显示TagName标签,光标跳到标签处
    Ctrl+W + ]  新窗口显示当前光标下单词的标签,光标跳到标签处
    当一个标签有多个匹配项时(函数 (或类中的方法) 被多次定义),":tags" 命令会跳转到第一处。如果在当前文件中存在匹配,那它将会被首先使用。
    可以用这些命令在各匹配的标签间移动:
    :tfirst    到第一个匹配
    :[count]tprevious 向前 [count] 个匹配
    :[count]tnext  向后 [count] 个匹配
    :tlast    到最后一个匹配
    或者使用以下命令选择要跳转到哪一个
    :tselect TagName
    输入以上命令后,vim会为你展示一个选择列表。然后你可以输入要跳转到的匹配代号 (在第一列)。其它列的信息可以让你知道标签在何处被定义过。
    以下命令将在预览窗口显示标签
    :ptag TagName 预览窗口显示TagName标签,光标跳到标签处
    Ctrl+W + }  预览窗口显示当前光标下单词的标签,光标跳到标签处
    :pclose   关闭预览窗口
    :pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时很有用)
    :psearch atoi 查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用。
     
    最简单的使用方法举例
    用vi在任意目录写一个Test.c文件,内容如下:

    int main(void)
    {
    printf("Hello World!\n");
    return 0;
    }

    写好后末行模式输入w保存好(不要退出vi),按Esc回到指令模式,把光标停留在printf上
    然后按 Ctrl+W + ],vi会自动跳到Linux系统函数printf()处,这时我们能查看printf()的原形
    查看完了,按Ctrl+o(回到上一个标签) 就回到原来的地方
    一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
    4、管理vim插件——vim-addons
    通 过vim-addons,我们可以管理vim插件。我们在sudo apt-get install vim vim-scripts vim-doc时,一般会自动安装上vim-addons。若未安装可通过sudo apt-get install vim-addon-manager手动安装。安装完成后,就可以用vim-addons管理vim插件了。
    # 系统中已有的vim-scripts中包含的插件及其状态:
    lingd@ubuntu:~$ vim-addons status
    # Name                     User Status  System Status
    align                       removed       removed     
    alternate                   removed       removed     
    bufexplorer                 removed       removed     
    calendar                    removed       removed     
    closetag                    removed       removed     
    colors sampler pack         removed       removed     
    cvsmenu                     removed       removed     
    debPlugin                   removed       removed     
    detectindent                removed       removed     
    doxygen-toolkit             removed       removed     
    editexisting                removed       removed     
    enhanced-commentify         removed       removed     
    gnupg                       removed       removed     
    info                        removed       removed     
    justify                     removed       removed     
    lbdbq                       removed       removed     
    markdown-syntax             removed       removed     
    matchit                     removed       removed     
    minibufexplorer             installed     removed     
    nerd-commenter              removed       removed     
    omnicppcomplete             installed     removed     
    po                          removed       removed     
    project                     installed     removed     
    python-indent               removed       removed     
    secure-modelines            removed       removed     
    snippetsEmu                 removed       removed     
    sokoban                     removed       removed     
    supertab                    removed       removed     
    surround                    removed       removed     
    taglist                     installed     removed     
    tetris                      removed       removed     
    utl                         removed       removed     
    vcscommand                  removed       removed     
    vimplate                    removed       removed     
    whatdomain                  removed       removed     
    winmanager                  removed       removed     
    xmledit                     removed       removed   
    上 面我们介绍了如何独立于系统配置文件之外,建立自己的Vim配置文件。当我们自己下载安装Vim插件的时候,也可以另外建立目录,放置我们自己的插件。这 个目录一般为/home/user/.vim,另外还需要建立一个插件子目录,一个插件文档子目录,以上的可以进入/home/user目录下通过下面的 命令执行:
    lingd@ubuntu:~$ mkdir .vim
    lingd@ubuntu:~$ cd .vim
    lingd@ubuntu:~/.vim$ mkdir plugin
    lingd@ubuntu:~/.vim$ mkdir doc
    # vim官方插件的安装,xxxx是要安装的插件名,以status中显示的名称为准。安装插件xxxx时使用以下命令(前提是在目录/home/user/.vim/下建立好了plugin和doc两个文件夹)
    vim-addons install xxxx
     关于vim-addons命令的详细用法,可以通过“man vim-addons”查看其帮助文档

    5、vim自动补全——OmniCppComplete
    vim的自动补全功能可通过其插件OmniCppComplete实现。
    安装OmniCppComplete
    lingd@ubuntu:~$ vim-addons install omnicppcomplete
    配置OmniCppComplete
    在vim配置文件/home/user/.vimrc中加入如下的配置:

    "-- omnicppcomplete setting --
    " 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
    imap <F3> <C-X><C-O>
    " 按下F2根据头文件内关键字补全
    imap <F2> <C-X><C-I>
    set completeopt=menu,menuone " 关掉智能补全时的预览窗口
    let OmniCpp_MayCompleteDot = 1 " autocomplete with .
    let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
    let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
    let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
    let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
    let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
    let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
    let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
    "let OmniCpp_DefaultNamespaces=["std"]
    let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
    let OmniCpp_ShowAccess=1

    (前几行就是提供了C++中的./->/::等操作符的提示和自动完成)。
    OmniCppComplete 是基于ctags数据库即tags文件实现的(基于ctags生成的索引信息来实现自动补全的),所以在ctags -R生成tags时还需要一些额外的选项,这样生成的tags文件才能与OmniCppComplete配合运作。使用下列命令生成tags文件,就可以 与OmniCppComplete配合运作:
    ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
    --c++-kinds=+p  : 为C++文件增加函数原型的标签
    --fields=+iaS   : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
    --extra=+q      : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全
    # vim自动补全功能的测试
    # 为了测试自动补全功能,我们先下载C++一份C++标准库的源代码。
    lingd@ubuntu:~$ sudo apt-get install build-essential
    # 然后在/usr/include/c++下就可以找到标准库的头文件了。
    lingd@ubuntu:~$ cd /usr/include/c++
    lingd@ubuntu:/usr/include/c++$ ls
    4.4  4.4.3
    # 在此文件夹下生成能与OmniCppComplete配合运作的tags文件
    lingd@ubuntu:/usr/include/c++$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
    lingd@ubuntu:/usr/include/c++$ ls
    4.4  4.4.3  tags
    # 在vim的配置文件中如下内容,然后在编程的时候就可以使用自动补全功能了。
    lingd@ubuntu:/usr/include/c++$ vi ~/.vimrc

    set tags+=/usr/include/c++/tags

    # 用vi打开前面的Test.c文件,在printf("Hello World!\n")下一行中,输入pri,然后按下Ctrl+X Ctrl+O,此时vi会弹出一个窗口,所有以pri开头的tag都会出现在这个窗口中,printf就出现在第6行中
    lingd@ubuntu:~$ cd ~
    lingd@ubuntu:~$ vim Test.c
      一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
    注 意:在自动补全的点,Vim必须知道可能补全的定义。比如说,在namespace std命名空间下的变量和函数,必须要用using namespace std;暴露出来,否则是不能补全的。在.cpp文件中还可以,在.h文件中这样就不是好的做法了。暂时不知道这个问题是由于我自己配置错误还是程序没有 实现。
    当自动补全下拉窗口弹出后,一些可用的快捷键:
    Ctrl+P  向前切换成员
    Ctrl+N  向后切换成员
    Ctrl+E  表示退出下拉窗口, 并退回到原来录入的文字
    Ctrl+Y  表示退出下拉窗口, 并接受当前选项
    其他补全方式:
    Ctrl+X Ctrl+L 整行补全
    Ctrl+X Ctrl+N  根据当前文件里关键字补全
    Ctrl+X Ctrl+K  根据字典补全
    Ctrl+X Ctrl+T  根据同义词字典补全
    Ctrl+X Ctrl+I  根据头文件内关键字补全
    Ctrl+X Ctrl+]  根据标签补全
    Ctrl+X Ctrl+F  补全文件名
    Ctrl+X Ctrl+D  补全宏定义
    Ctrl+X Ctrl+V  补全vim命令
    Ctrl+X Ctrl+U  用户自定义补全方式
    Ctrl+X Ctrl+S  拼写建议
    帮助文档
    :help omnicppcomplete
     
    6、提示函数原型echofunc
    echofunc可以在命令行中提示当前输入函数的原型。
    echofunc下载地址:http://www.vim.org/scripts/script.php?script_id=1735
    下载完成后,把echofunc.vim文件放到 ~/.vim/plugin文件夹中
    当 你在vim插入(insert)模式下紧接着函数名后输入一个"("的时候, 这个函数的声明就会自动显示在命令行中。如果这个函数有多个声明, 则可以通过按键"Alt+-"和"Alt+="向前和向后翻页, 这个两个键可以通过设置g:EchoFuncKeyNext和g:EchoFuncKeyPrev参数来修改。这个插件需要tags文件的支持, 并且在创建tags文件的时候要加选项"--fields=+lS"(OmniCppComplete创建的tag文件也能用), 整个创建tags文件的命令如下:
    $ ctags -R --fields=+lS
    其他插件说明详见echofunc.vim

    一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
     如果你在编译vim时加上了"+balloon_eval"特性,那么当你把鼠标放在函数名上的时候会有一个tip窗口弹出, 该窗口中也会有函数的声明

    7、标签浏览器Taglist
    Taglist用于列出了当前文件中的所有标签(宏, 全局变量, 函数名等)
    安装Taglist
    lingd@ubuntu:~$ vim-addons install taglist
    配置Taglist
    在vim配置文件/home/user/.vimrc中加入如下的配置:

    "-- Taglist setting --
    let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
    let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边
    let Tlist_Show_One_File=0 "taglist可以同时展示多个文件的函数列表
    let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
    let Tlist_Exit_OnlyWindow=1 "taglist是最后一个分割窗口时,自动推出vim
    "是否一直处理tags.1:处理;0:不处理
    let Tlist_Process_File_Always=1 "实时更新tags
    let Tlist_Inc_Winwidth=0

    进入vim后用命令":Tlist"打开/关闭taglist窗口
    帮助文档
    :help taglist.txt
    一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客

     8、文件浏览器和缓冲区管理器WinManager
    WinManager用于管理文件浏览器和缓冲区(buffer)。2.0以上版本的WinManager还可以管理其他IDE类型插件,不过要用户在插件中增加一些辅助变量和hook来支持WinManager(帮助文档有相关说明)。
    Taglist 插件本身就提供了对WinManager的支持,不需要我们去修改它。这里,我们就用WinManager来管理文件浏览器netrw和标签浏览器 Taglist。netrw是标准的vim插件, 已经随vim一起安装进系统里了, 不需要我们自行下载安装。
    安装WinManager
    lingd@ubuntu:~$ vim-addons install winmanager
    配置WinManager
    在vim配置文件/home/user/.vimrc中加入如下的配置:

    "-- WinManager setting --
    let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件
    "let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim
    nmap wm :WMToggle<cr>

    常用命令
    :WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage
    文件浏览器命令(在文件浏览器窗口中使用)
    <enter>或双击  如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
    <tab>   如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
    <F5> 刷新列表
    -  返回上一层目录
    c  使浏览目录成为vim当前工作目录
    d  创建目录
    D  删除当前光标下的目录或文件
    i  切换显示方式
    R  文件或目录重命名
    s  选择排序方式
    r  反向排序列表
    x  定制浏览方式, 使用你指定的程序打开该文件
    winmanager帮助文档
    :help winmanager
    netrw帮助文档
    :help netrw
    一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
     9、buffer管理器MiniBufferExplorer
    MiniBufferExplorer 用于浏览和管理buffer,如果只打开一个文件,是不会显示在屏幕上的,而打开多个文件之后,会自动出现在屏幕上。vim也有自带的buffer管理工 具,不过只有:ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观.
    关于vim缓冲区(buffer)和窗口的概念(详见:help windows)
    "缓冲区" 是一块内存区域,里面存储着正在编辑的文件。如果没有把缓冲区里的文件存盘,那么原始文件不会被更改。
    "窗口" 被用来查看缓冲区里的内容。你可以用多个窗口观察同一个缓冲区,也可以用多个窗口观察不同的缓冲区。
    "屏幕" Vim 所用的整个工作区域,可以是一个终端模拟窗口,也被叫做 "Vim 窗口"。一个屏幕包含一个或多个窗口,被状态行和屏幕底部的命令行分割。
            +-------------------------------+
    屏幕    | 窗口 1        | 窗口 2        |
            |               |               |
            |               |               |
            |=== 状态行  ===|==== 状态行 ===|
            | 窗口 3                        |
            |                               |
            |                               |
            |========== 状态行 =============|
            |命令行                         |
            +-------------------------------+
    安装MiniBufferExplorer
    lingd@ubuntu:~$ vim-addons install minibufexplorer
    配置MiniBufferExplorer
    在vim配置文件/home/user/.vimrc中加入如下的配置:

    " -- MiniBufferExplorer --
    let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
    let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
    let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
    "let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
    let g:miniBufExplModSelTarget = 1 " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer

    常用命令
    <Tab>  移到上一个buffer
    <Shift-Tab> 移到下一个buffer
    <Enter>  打开光标所在的buffer
    d   删除光标所在的buffer
    一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
     10、代码折叠fold
    折叠用于把缓冲区内某一范围内的文本行显示为屏幕上的一行。就像一张纸,要它缩短
    些,可以把它折叠起来:
     +------------------------+
     | 行 1                   |
     | 行 2                   |
     | 行 3                   |
     |_______________________ |
     \                        \
      \________________________\
      / 被折叠的行             /
     /________________________/
     | 行 12                  |
     | 行 13                  |
     | 行 14                  |
     +------------------------+
    那些文本仍然在缓冲区内而没有改变。受到折叠影响的只是文本行显示的方式。
    折叠的好处是,通过把多行的一节折叠成带有折叠提示的一行,会使你更好地了解对文本
    的宏观结构。
    折叠方式foldmethod
    vim提供以下6种方法来选定折叠方式:
    manual 手工定义折叠
    indent 更多的缩进表示更高级别的折叠
    expr 用表达式来定义折叠
    syntax 用语法高亮来定义折叠
    diff 对没有更改的文本进行折叠
    marker 对文中的标志折叠
    折叠级别foldlevel
    'foldlevel' 是个数值选项:数字越大则打开的折叠更多。
    当 'foldlevel' 为 0 时,所有的折叠关闭。
    当 'foldlevel' 为正数时,一些折叠关闭。
    当 'foldlevel' 很大时,所有的折叠打开。
    折叠栏foldcolumn
    'foldcolumn' 是个数字,它设定了在窗口的边上表示折叠的栏的宽度。当为0时,没有折叠栏。最大是12。
    一个打开的折叠由一栏来表示,顶端是 '-',其下方是 '|'。这栏在折叠结束的地方结束。当折叠嵌套时,嵌套的折叠出现在被包含的折叠右方一个字符位置。
    一个关闭的折叠由 '+' 表示。
    当折叠栏太窄而不能显示所有折叠时,显示一数字来表示嵌套的级别。
    在折叠栏点击鼠标,可以打开和关闭折叠:
    - 点击 '+' 打开在这行的关闭折叠
    - 在任何其他非空字符上点击,关闭这行上的打开折叠
    在vim配置文件/home/user/.vimrc中加入如下的配置:

    "--fold setting--
    set foldmethod=syntax " 用语法高亮来定义折叠
    set foldlevel=100 " 启动vim时不要自动折叠代码
    set foldcolumn=5 " 设置折叠栏宽度

    常用命令
    za  打开/关闭在光标下的折叠
    zA  循环地打开/关闭光标下的折叠
    zo  打开 (open) 在光标下的折叠
    zO  循环打开 (Open) 光标下的折叠
    zc  关闭 (close) 在光标下的折叠
    zC  循环关闭 (Close) 在光标下的所有折叠
    zM  关闭所有折叠
    zR  打开所有的折叠
    帮助文档
    :help usr_28.txt
    :help fold.txt
      一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
    11、项目目录数管理器Project
    Project插件是用来显示项目的目录树的,这个目录树是默认保存在~/.vimprojects文件中。
    安装Project
    lingd@ubuntu:~$ vim-addons install project
    Project目录树可以通过下面的步骤生成:
    1) 打开vim在命令模式下输入 :Project,在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的
    2)在命令模式下(不是插入模式)输入\C (大写的C),会出现下面这些信息:
    Enter the Name of the Entry: xxxx (输入项目名称)
    Enter the Absolute Directory to Load: /xxx/xxx/xxx (输入项目根目录的绝对路径)
    Enter the CD parameter: . (“.”为当前目录)或者和项目根目录一致
    Enter the File Filter: *.* (符合条件的源文件,可以是*.cpp/*.h等)
    PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容,你可以手动进行更改。
     
    12、quickfix命令集
    通过quickfix命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正,直到不再出错为止。
    在vim配置文件/home/user/.vimrc中加入如下的配置:

    "-- QuickFix setting --
    " 按下F6,执行make clean
    map <F6> :make clean<CR><CR><CR>
    " 按下F7,执行make编译程序,并打开quickfix窗口,显示编译信息
    map <F7> :make<CR><CR><CR> :copen<CR><CR>
    " 按下F8,光标移到上一个错误所在的行
    map <F8> :cp<CR>
    " 按下F9,光标移到下一个错误所在的行
    map <F9> :cn<CR>
    " 以上的映射是使上面的快捷键在插入模式下也能用
    imap <F6> <ESC>:make clean<CR><CR><CR>
    imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR>
    imap <F8> <ESC>:cp<CR>
    imap <F9> <ESC>:cn<CR>

    帮助文档
    :help usr_30
    :help quickfix
    下面的命令运行 "make" (包括你所给出的参数) 程序并捕捉其运行结果: >
     :make {arguments}
    如果编译时出现错误,按 <Enter>,回到vim界面,看不到出错信息了!这时,可以运行以下命令
    :cw[indow]
    打开quickfix窗口来查看出错信息,它会自动跳到第一处出错的地方。然后,你可以双击出错某一条出错信息,vim就会自动跳转到相应的出错位置
    :cn[ext]  光标移到下一个错误所在的行
    :cp[revious] 光标移到上一个错误所在的行
    :cfirst  到第一处错误
    :clast  到最后一处错误
    :cc   空间不够时,Vim 会缩短出错信息。如果你想查看详细信息,可以使用此命令
    :cl[ist] 列出所有出错信息的概览(只有那些含有文件名或行数的错误信息会被显示,需要查看那些并不含文件名或行数的信息可用“:cl[ist]!”命令)
    一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
     13、Cscope
    Cscope是一个类似于ctags的工具,不过其功能比ctags强大很多。
    安装Cscope
    lingd@ubuntu:~$ sudo apt-get install cscope
    在vim配置文件/home/user/.vimrc中加入如下的配置:

    "-- Cscope setting --
    if has("cscope")
    set csprg=/usr/bin/cscope " 指定用来执行cscope的命令
    set csto=0 " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
    set cst " 同时搜索cscope数据库和标签文件
    set cscopequickfix=s-,c-,d-,i-,t-,e- " 使用QuickFix窗口来显示cscope查找结果
    set nocsverb
    if filereadable("cscope.out") " 若当前目录下存在cscope数据库,添加该数据库到vim
    cs add cscope.out
    elseif $CSCOPE_DB != "" " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
    cs add $CSCOPE_DB
    endif
    set csverb
    endif
    map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
    imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
    " 将:cs find cCscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c
    nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
    nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
    nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
    nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR> :copen<CR><CR>

    cscope的主要功能是通过其"find"子命令来实现的
    "cscope find"的用法:
    cs find c|d|e|f|g|i|s|t name
    0 或 s  查找这个 C 符号(可以跳过注释)
    1 或 g  查找这个定义
    2 或 d  查找这个函数调用的函数
    3 或 c  查找调用过这个函数的函数
    4 或 t  查找这个字符串
    6 或 e  查找这个 egrep 模式
    7 或 f  查找这个文件
    8 或 i  查找包含这个文件的文件
    用法:
    <1>、为源码建立一个cscope数据库
    lingd@ubuntu:~/arm/linux-2.6.28.7$ cscope -Rbq
    lingd@ubuntu:~/arm/linux-2.6.28.7$ ls cscope.*
    cscope.in.out  cscope.out  cscope.po.out
    <2>、 用vim打开某个源码文件,末行模式下,输入“:cs add cscope.out"(该命令已被我们映射为快捷键F4),添加cscope数据库到vim。因为我们已将vim配置为启动时,自动添加当前目录下的 cscope数据库,所以你再添加该cscope数据库时,vim会提示“重复cscope数据库 未被加入“
    <3>、完成前两步 后,现在就可以用“cs find c”等Cscope查找命令查找关键字了。我们已在.vimrc中将“cs find c”等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快按下c)
     
    帮助文档
    :help if_cscop
    注意:帮助文档if_cscop中,快捷键映射nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>是有误的!
    比 如光标“header.h”上按下<C-_>i,也就是查找包含“header.h“的文件。但是按照这个映射规则,则是将<C- _>i映射为cs find i ^header.h$,也就是查找包含“^header.h$“的文件,这显然不是我们想要的结果。该映射规则应该改成nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
    一步步将vim改造成C/C++开发环境(IDE) - xxhalbert - xxhalbert的博客
     14、vim常用快捷键
    %  跳转到配对的括号去
    [[  跳转到当前或者上一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)
    ][  跳转到当前代码块(函数定义、类定义等)的结尾去(但要求代码块中'{'必须单独占一行)
    ]]  跳转到下一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)
    [/  跳到注释开头(只对/* */注释有效)
    ]/ 跳到注释结尾(只对/* */注释有效)
    gD  跳转到当前文件内标识符首次出现的位置,可用于跳转到全部变量的定义处;查找局部变量时,要是多个函数中定义了该局部变量,使用gD进行查找,找到的变量定义可能不是你需要的
    gd 跳转到当前函数内标识符首次出现的位置,可用于跳转到局部变量的定义处
    ''  跳转到光标上次停靠的地方, 是两个', 而不是一个"
    mx  设置书签,x只能是a-z的26个字母
    `x  跳转到书签处("`"是1左边的键)
    >  增加缩进,"x>"表示增加以下x行的缩进
    <  减少缩进,"x<"表示减少以下x行的缩进
    展开全文
  • 搭建Ubuntu下C/C++编译环境 1. 安装Ubuntu。 2. 安装gcc  方法一:  sudoapt-get install build-essential  安装完了可以执行  gcc--version的命令来查看版本,输出如下:
  • Golang Vim开发环境搭建

    2019-07-25 20:31:13
    Golang Vim开发环境搭建 文章目录Golang Vim开发环境搭建1 升级vim2 安装Vundle.vim3 安装Vim-go4 安装YouCompleteMe4.1 下载4.2 相关报错4.2.1 Python headers are missing ...4.2.2 "CMAKE_CXX_COMPILER-NOTFOUND...
  • Emscripten编译环境搭建--将C和C++编译成JS 需求:linux环境下用js执行c、c++文件,使用emscirpten编译器 目标:搭建好Emscripten环境 环境:Ubuntu16.04 操作日期:2018.07.31 巨大天坑:按照官网步骤走...
  • 对于Windows上做C++开发的用户来说,vs为他们做了大量的工作,语法高亮、自动缩进、智能提示等等,当你happy的使用vs时,请记住一点,这是一个收费软件,虽然在我大中华普遍都在使用微软的盗版软件,但作为程序员...
  • vim ycm c++ 环境搭建

    2019-11-27 15:55:55
    安装简单的依赖vim实现python、c++的代码提示、跳转和一些让开发变得更加容易的软件。 1. 下载高版本的vim 起码得8.1,这是ycm的最低配置,别看版本了,直接新下。 git clone https://github.com/vim/vim.git ....
  • 在Ubuntu下搭建C/C++编程环境,综合起来说就是vim+gcc+gdb。其中vim用于文本编辑,gcc用于程序编译,gdb用于代码调试。 要安装编程环境,在Terminal中执行sudo apt-get install build-essential。 1 LINUX操作系统...
  • 方法一——VS:  使用windows开发神器visio studio。...不单单是C++,C、C#、VB等都可以开发。 方法二——只安装C++编译器:  最常用的免费可用的编译器是 GNU 的 C/C++ 编译器,为了在 Windows 上安装 GCC,您需...
  • 1.C编译环境配置{ # apt-get install gcc 安装编译环境 执行结束后我们可以 # gcc --version 来查看版本。 接下来我们写一个HelloWorld.c并编译运行。 # vim HelloWorld.c #include int main(void){
  • Linux下编写C++服务器(配置C++编译调试环境) 安装好linux虚拟机,确定能上网后,我们可以开始编写C++程序了,但在这之前我们需要下载编译器和调试器 下载gcc 在终端输入yum search gcc,查找yum源上的gcc软件包; ...
  • 文章目录VS code 之 c/c++远程开发环境搭建1.基本环境2.远程主机的开发环境搭建3.本地vs code的配置配置ssh选项4远程开发教程 VS code 之 c/c++远程开发环境搭建 1.基本环境 本地主机:Visual Studio Code 远程主机...
  • 由于之前在培训班接触过一点linuxb编程因此装好ubuntu系统后直接按照记忆中右键→打开终端如图,在建立完main.c文件进行vim 编辑的时候发现出现程序“vim 已包含在”的字样,于是百度之。解决方案: 这个需要系统...
  • 一下博客中修改得到: ... 首先展示最后配置的效果图 ...一步步将vim改造成C/C++开发环境(IDE) - Nealson - Figthing的博客 1、安装vimvim的基本插件 命令:sudo apt-get install vim vim-script...
  • 有人会问这是什么鬼? 这个是一个手机版本的ubuntu终端模拟器,可以使用apt install安装Arch Linux相关命令行工具集,可以在手机上安装gcc编译器,调试器 一.... 方法1: ...这个方法安装的话,网络下载...
  • windows下搭建c++开发环境(MinGW-64+VIM)前言所需文件介绍,及其下载地址MinGW-64安装过程vim安装以及配置 前言 c++开发环境搭建有两种方式,一是安装集成开发环境(IDE),c++有许多IDE。如Code::Blocks、 ...
  • Fedora 下 c++ 开发环境搭建 使用yum安装gcc 使用yum安装g++ 查看安装的情况 使用yum安装vim vim编写c++的hello world g++ 编译c++程序
1 2 3 4 5 ... 20
收藏数 8,957
精华内容 3,582
关键字:

c++ vim编译环境的搭建