ubuntu 16.04 配置vim开发环境

xiaoxiao2021-02-28  114

在一下博客中修改得到:

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

 

 

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

命令:sudo apt-get install vim vim-scripts vim-doc

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

vim-doc是vim帮助文档

 

 

 

 

2、基本配置

在个人目录下新建一个.vimrc的vim配置文件,并粘贴以下内容保存,如果用vim复制粘贴不方便,可以用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. 下面这句如果在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命令粘贴

 

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

 

 

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

一般在安装了vim、vim-scripts和vim-doc之后就会安装好,如果没安装,可以用

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

进行安装

 

如果要查看vim各个插件的状态,可以用

命令:vim-addons status

查看

 

此外,我们可以利用vim-addon-manager安装官方插件,这里我们先要确定在个人目录下是否有~/.vim/plugin和~/.vim/doc两个目录,如果没有,自己分别新建好,当我们要安装xxx插件时,我们可以用

命令:vim-addons install xxx

进行安装

 

对于vim-addons的详细用法,可以用

命令:man vim-addons

查看帮助文档

 

4、安装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,则会返回到原来的代码编辑位置

 

5、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

 

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

 

7、标签浏览器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

查看帮助文档

 

8、文件浏览器和缓冲区管理器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

 

 

9、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

 

 

10、代码折叠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

 

 

 

11、项目数据管理器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文件中就能看到内容,你可以手动进行更改。

12、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]!”命令)

 

12、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>

 

14、快捷键汇总

根据上面的配置 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

转载请注明原文地址: https://www.6miu.com/read-65141.html

最新回复(0)