ubuntu 16.04 配置vim开发环境

在一下博客中修改获得:php

http://blog.163.com/023_dns/blog/static/1187273662012125112426472/
linux


首先展现最后配置的效果图c++

一步步将vim改形成C/C++开发环境(IDE) - Nealson - Figthing的博客


一、安装vim和vim的基本插件

命令:sudo apt-get install vim vim-scripts vim-doc数据库

vim-scripts是vim的基本插件,语法高亮,缩进等等ubuntu

vim-doc是vim帮助文档vim


二、基本配置

在我的目录下新建一个.vimrc的vim配置文件,并粘贴如下内容保存,若是用vim复制粘贴不方便,能够用geditwindows

" 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. 下面这句若是在ubuntu下要注释掉
    " 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、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-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 
    set clipboard=unnamed   " 容许vim与系统剪切板交互,当在系统复制了一段代码,容许直接在vim用p命令粘贴

注意英语的双引号加空格表示后面的是注释


三、管理vim插件工具 vim-addon-manager

通常在安装了vim、vim-scripts和vim-doc以后就会安装好,若是没安装,能够用浏览器

命令:sudo apt-get install vim-addon-manageride

进行安装函数


若是要查看vim各个插件的状态,能够用

命令:vim-addons status

查看

此外,咱们能够利用vim-addon-manager安装官方插件,这里咱们先要肯定在我的目录下是否有~/.vim/plugin和~/.vim/doc两个目录,若是没有,本身分别新建好,当咱们要安装xxx插件时,咱们能够用

命令:vim-addons install xxx

进行安装


对于vim-addons的详细用法,能够用

命令:man vim-addons

查看帮助文档


四、安装ctags

ctags用于创建源代码树的标签索引,用于快速定位函数,宏定义,变量等

新安装的ubuntu没有ctags,能够用

命令:sudo apt-get install ctags

并在.vimrc文件中添加配置,实现按下F5更新工程中的tags文件

" *********************** 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+=/usr/include/systags "add new tags file(增长其余路径下的tags,在ctags -R 生成tags文件后,不要将tags移动到别的目录,不然ctrl+]时,会提示找不到源码文件)

要实现其余路径的代码索引,必须生成代码的tags的文件,例如要生成标准库的tags文件,步骤为cd到目录/usr/include,而后用

命令:sudo ctags -R --c++-kinds=+p --fields=+iaS --extra=+q *

创建该目录以及子目录的索引,其中 * 表示创建该目录及其子目录的索引

而后咱们会发现该目录下多了一个tags文件,并重命名为systags

为了省去每次创建工程时添加tags文件,能够在.vimrc文件中添加配置命令(上述配置中已经添加)

set tags+=/usr/include/systags

这样每次创建工程的时候就会自动添加该路径下的tags文件

要注意的是,这个tags文件不能随便移动,我试过将这个文件移动到其余地方,发现/usr/include子目录下的文件会找不到

当咱们要查看某个函数的原型时,将光标停留在函数名上,用快捷键ctrl+w+],就能在vim中增长一个新窗口,并定位到函数的原型上,若是用快捷键ctrl+],则会在原来的窗口上进行定位,用快捷键ctrl+o,则会返回到原来的代码编辑位置

五、vim自动补全——OmniCppComplete

用vim-addons安装该插件

命令:vim-addons install omnicppcomplete

而后在.vimrc中添加以下配置,设置插件的补全功能

" 按下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

因为该插件的补全功能基于ctags的数据,因此用ctags生成索引的时候要添加额外的参数

命令:ctags -R --c++-kinds=+p --fields=+iaS --extra=+q

其中,--c++-kinds=+p : 为C++文件增长函数原型的标签

--fields=+iaS : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)

--extra=+q : 为标签增长类修饰符。注意,若是没有此选项,将不能对类成员补全

在编写代码时,假如咱们要敲printf,此时只要敲prin,而后用快捷键ctrl+x ctrl+o,就能呼出候选函数

此外,还有经常使用的快捷键

当自动补全下拉窗口弹出后,一些可用的快捷键:

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


六、提示函数原型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


七、标签浏览器Taglist

Taglist用于列出了当前文件中的全部标签(宏, 全局变量, 函数名等)

正常来讲,按照上述步骤操做,Taglist已经安装到vim中了,若是还没安装,能够用

命令:vim-addons install taglist

进行安装

若是出现:Info: ignoring 'taglist' which is neither removed nor broken 的错误,有多是由于taglist已经安装好了,打开vim,在命令模式下输入

命令:Tlist

若是出现标签栏说明已经安装好了,此外还可使用

此外,还要在.vimrc里对Taglist进行配置

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

命令::help taglist.txt

查看帮助文档


八、文件浏览器和缓冲区管理器WinManager

WinManager用于管理文件浏览器和缓冲区(buffer)。2.0以上版本的WinManager还能够管理其余IDE类型插件,不过要用户在插件中增长一些辅助变量和hook来支持WinManager(帮助文档有相关说明)。

Taglist插件自己就提供了对WinManager的支持,不须要咱们去修改它。这里,咱们就用WinManager来管理文件浏览器netrw和标签浏览器Taglist。netrw是标准的vim插件, 已经随vim一块儿安装进系统里了, 不须要咱们自行下载安装。

安装WinManager,能够用

命令:vim-addons install winmanager

配置winmanager能够在.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


九、buffer管理器MiniBufferExplorer

MiniBufferExplorer用于浏览和管理buffer,若是只打开一个文件,是不会显示在屏幕上的,而打开多个文件以后,会自动出如今屏幕上。vim也有自带的buffer管理工具,不过只有:ls, :bnext, :bdelete 等的命令, 既很差用, 又不直观.

关于vim缓冲区(buffer)和窗口的概念(详见:help windows)

"缓冲区" 是一块内存区域,里面存储着正在编辑的文件。若是没有把缓冲区里的文件存盘,那么原始文件不会被更改。

"窗口" 被用来查看缓冲区里的内容。你能够用多个窗口观察同一个缓冲区,也能够用多个窗口观察不一样的缓冲区。

"屏幕" Vim 所用的整个工做区域,能够是一个终端模拟窗口,也被叫作 "Vim 窗口"。一个屏幕包含一个或多个窗口,被状态行和屏幕底部的命令行分割。

安装该插件能够用(按照上面的步骤下来应该已经装好了,或者vim已经自带了)

命令:vim-addons install minibufexplorer

并在.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


十、代码折叠fold

折叠用于把缓冲区内某一范围内的文本行显示为屏幕上的一行。就像一张纸,要它缩短

些,能够把它折叠起来

那些文本仍然在缓冲区内而没有改变。受到折叠影响的只是文本行显示的方式。

折叠的好处是,经过把多行的一节折叠成带有折叠提示的一行,会使你更好地了解对文本

的宏观结构。

折叠方式foldmethod

vim提供如下6种方法来选定折叠方式:

manual 手工定义折叠

indent 更多的缩进表示更高级别的折叠

expr 用表达式来定义折叠

syntax 用语法高亮来定义折叠

diff 对没有更改的文本进行折叠

marker 对文中的标志折叠

折叠级别foldlevel

'foldlevel' 是个数值选项:数字越大则打开的折叠更多。

当 'foldlevel' 为 0 时,全部的折叠关闭。

当 'foldlevel' 为正数时,一些折叠关闭。

当 'foldlevel' 很大时,全部的折叠打开。

折叠栏foldcolumn

'foldcolumn' 是个数字,它设定了在窗口的边上表示折叠的栏的宽度。当为0时,没有折叠栏。最大是12。

一个打开的折叠由一栏来表示,顶端是 '-',其下方是 '|'。这栏在折叠结束的地方结束。当折叠嵌套时,嵌套的折叠出如今被包含的折叠右方一个字符位置。

一个关闭的折叠由 '+' 表示。

当折叠栏太窄而不能显示全部折叠时,显示一数字来表示嵌套的级别。

在折叠栏点击鼠标,能够打开和关闭折叠:

- 点击 '+' 打开在这行的关闭折叠

- 在任何其余非空字符上点击,关闭这行上的打开折叠

在vim配置文件/home/user/.vimrc中加入以下的配置:

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


十一、项目数据管理器Project

(其实我还不知道这东西拿来干吗的,应该是我还没搞过大的工程,因此用不到) Project插件是用来显示项目的目录树的,这个目录树是默认保存在~/.vimprojects文件中。

安装Project

        命令: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文件中就能看到内容,你能够手动进行更改。

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文件中就能看到内容,你能够手动进行更改。

十二、quickfix命令集

经过quickfix命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你能够接着从新编译并作修正,直到再也不出错为止。

在vim配置文件/home/user/.vimrc中加入以下的配置:

" 按下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]!”命令)


十二、cscope

Cscope是一个相似于ctags的工具,不过其功能比ctags强大不少。

安装Cscope

命令:sudo apt-get install cscope

在vim配置文件/home/user/.vimrc中加入以下的配置:

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 c等Cscope查找命令映射为<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>


1四、快捷键汇总

根据上面的配置 F2-F9 按键的功能为:

F2:根据头文件内关键字进行补全

F3:自动补全代码

F4:添加cscope数据库到vim

F5:更新当前目录下的tags文件

F6:执行make clean命令

F7:执行make命令

F8:编译错误时移动到上一个错误

F9:编译错误时移动到下一个错误


vim经常使用快捷键(通常模式下)

shift+v:视图模式

gg:光标移动到文档开头

G:光标移动到最后一行开头

shift+$:移动到该行的末尾

i:进入插入模式(光标前位置进行插入)

a:进入插入模式(光标后位置进行插入)

o:在光标下新建一行并进入插入模式

O:在光标上新建一行并进入插入模式

I:在该行行尾进入插入模式

A:在该行行首进入插入模式

y:复制到vim剪切板

p:从vim剪切板拷贝

"+y:复制到系统剪切板

"+p:从系统剪切板进行复制

u:撤销上一步操做

ctrl+r:恢复上一步撤销

j/k/h/l:光标上/下/左/右移动

dd:删除整行


若是重装系统怎么办?从新配置?怎么可能!我已经将配置文件上传到百度云了!

http://pan.baidu.com/s/1i5oRFHb