Ubuntu安装vim插件的步骤

2016-02-19 13:33 16 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的Ubuntu安装vim插件的步骤,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - Linux教程 】

Source Insight是一款编辑器,拥有强大的功能,但适用于Windows系统,那么Ubuntu系统该使用哪种编辑器呢?Vim就是Linux下很好的编辑器,下面图老师小编就给大家介绍下如何在Ubuntu上安装vim插件。

 Ubuntu安装vim插件的步骤

source insight是windows下的优秀编辑器,适合阅读管理代码,主要有以下功能:

查找函数,变量或者宏的定义。

查找函数,变量或者宏的引用位置。

查找函数被调用的位置

查找某个符号在工程内的所有匹配

由于unix哲学主张一个工具只做好一件事情,所以linux下并没有这种集多样功能于一体的软件。vim是非常优秀的编辑器,本文介绍如何通过安装插件将vim武装成和source insight一样甚至更强大的工具。

我的环境是ubuntu12.04 LTS+vim version 7.3

1. ctags

ctags插件用来查找函数,变量或者宏的定义,ubuntu下可以非常方便的安装,

sudo apt-get install exuberant-ctag

在源文件目录下执行命令

ctags -R

会生成一个tags文件,里面包含了所有源文件的符号信息。在vim中,快捷键ctrl+]会跳到当前函数的定义处。为了方便生产tags,设置快捷键F5生成tag,将下面命令加入到~/.vimrc

nnoremap 《F5》 :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q 。《CR》

nnoremap 表示vim普通模式的键映射,

--c++-kinds=+p : 为标签添加函数原型(prototype)信息

--fields=+iaS : 为标签添加继承信息(inheritance),访问控制(access)信息,函数特征(function Signature,如参数表或原型等)

--extra=+q : 为类成员标签添加类标识

如果项目有多层文件结构,一般只在根目录生成一个tag文件,那么子目录访问不到tag文件,在子目录中直接打开源文件将找不到函数的tag,一个方便的做法是在.vimrc中将tag加到tags的查找路径中,每个项目一项。

project1

set tags+=/project1/tags

ctags的快捷键:

ctrl+] 切换到定义处

g+ctrl+] 如果多处匹配,列出匹配tag列表供选择

count+ctrl+t 后退count个tag

:count+tag 前进count个tag

:ts 列出匹配tag列表,存在多个匹配时

:tn 跳到下一处匹配tag

:tp 跳到上一处匹配tag

:tf 跳到地一个匹配tag

:tl 跳到最后一个匹配tag

:set tags? 查看tags文件路径

2.cscope

Ctags只能找到符号定义的地方,如果要像sourceinsight一样,具备查找类似函数调用查找,符号引用查找等高级功能,就要借助于cscope了。Cscope是类似于ctags的工具,不过它的功能比ctags强大多了。

在当前源文件目录下执行

cscope–Rbq

其中

-R:递归处理子层目录

-b:生成数据库后自动退出

-q:生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度

vim打开源文件后,增加cscope数据库到当前环境中

:csadd cscope.out

可以发现执行后没有反应,那是因为没有打开cscopeverbose选项,打开后增加数据库后会显示成功还是失败信息,默认是关闭的,我们把它打开。

:setcsverb

想要查看当前已经加载了哪些cscope数据库

:csshow

想要删除某个数据库

:cskill #

安装ctags和cscope后,就有两种数据库了,默认会同时查看cscope和ctag数据库,这个行为由cst控制,默认是打开的。

:setcst

Csto控制查看数据库的顺序,等于0时优先查看cscope数据库,再查看ctags数据库

:setcsto=0

为了方便,我们可以在.vimrc中自动增加当前路径下的cscope数据库

if has(cscope) set csprg=/usr/local/bin/cscope set csto=0 set cst set csverb if filereadable(cscope.out) cs add cscope.out elseif $CSCOPE_DB != cs add $CSCOPE_DB endif set csverbendif

配置好以后就可以使用cscope的强大的查找功能了,cscope查找命令

:cs find type name

Type包括

0或者s 查找name在这个工程中出现的位置

1或者g 查找name的定义

2或者d 查找name调用的函数

3或者c 查找调用name的函数

4或者t 查找name字符串

6或者e 查找egrep匹配模式

7或者f 查找文件

8或者i 查找#include 文件名为name的文件

我在平常使用的最多是查找定义和调用当前函数的函数,所以在.vimrc中配置成F3和F4快捷键,自动查找光标下符号。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

nmap 《F3》 :cs find 3 《C-R》=expand(《cword》)《CR》《CR》

nmap 《F4》 :cs find 0 《C-R》=expand(《cword》)《CR》《CR》

3.taglist

source insight左边是当前文件的所有符号窗口,包括include的头文件,函数和变量。这个功能可以由taglist实现。Ubuntu下安装非常方便,

vim-addons install taglist

vim-addons是vim的插件管理程序,如果没有安装的话可以执行以下命令安装

sudo apt-get install vim-addon-manager

sudo apt-get install vim-scripts

vim-addons status可以看到当前插件的安装状态

vim-addons install 安装插件

vim-addons remove 删除插件

安装好taglist后,可以自己打开和关闭taglist窗口,

:TlistToggle

可以设置成F8快捷键,不过等后面安装了winmanager后也不需要手动控制了。

nnoremap 《silent》 《F8》 :TlistToggle《CR》 F8

几个比较实用的选项需要打开:

let Tlist_Auto_Open=1 打开文件时自动打开taglist

let Tlist_Exit_OnlyWindow=1 关闭文件时自动关闭taglist

let Tlist_File_Fold_Auto_Close=1 taglist window中折叠非当前文件

let Tlist_Process_File_Always=1 taglist始终解析文件

需要查看更多选项请help

:help taglist.txt

Ctrl-w-w 跳到taglist窗口,Taglist窗口中也有快捷键,

《enter》 跳到光标下的tag定义的位置

u 更新taglist

zo 打开折叠

zc 关闭折叠

《tab》或]] 跳到下一个文件

《BS》或[[ 跳到上一个文件

4.NERDTree

Source insight右边是文件列表窗口,显示了工程的所有文件名。文件管理插件NERDTree具有类似的功能,该插件可以显示当前目录下所有文件和目录,并方便地浏览和操作文件。

Vim addon manager没有NERDTree插件,需要自己下载NERDTree,下载后将plugin/NERD_tree.vim 和doc/NERD_tree.txt分别复制到.vim的相应目录下

为了让winmanager顺利打开NERDTree窗口,在.vimrc中增加下面代码,

let g:NERDTree_title=‘[NERD Tree]’function! NERDTree_Start() exec ‘NERDTree’endfunctionfunction! NERDTree_IsValid() return 1endfunction

5.winmanager

为了像source insight一样同时显示多个窗口,需要winmanager插件。

vim-addons install winmanager

同时在winmanager中显示NERDTree和taglist窗口,默认在左边,

let g:winManagerWindowLayout=‘NERDTree|TagList’

设置快捷键wm打开winmanager,

nmap wm :WMToggle《cr》 wm命令打开

设置窗口转换快捷键,不过在用了MiniBufExplorer后有更方便的选择,

map 《c-w》《c-b》 :BottomExplorerWindow《cr》 跳到下面窗口

map 《c-w》《c-f》 :FirstExplorerWindow《cr》 跳到上面窗口

最好打开vim时会自动打开winmanager窗口,

let g:AutoOpenWinManager = 1

同时修改winmanager.vim

set auto open Winmanagerif g:AutoOpenWinManager autocmd VimEnter * nested call s:StartWindowsManager()|3wincmd w|q endif

其中3表示打开后光标在第3个窗口,即源文件窗口。1,2分别表示NERDTree和taglist窗口。

因为winmanager总会打开一个没有用的空窗口,不知道为什么,需要最后加q关闭它。如果是用WMToggle打开winmanager的话,要关闭这个空窗口就需要在winmanager.vim的ToggleWindowsManager函数中增加q。

function! 《SID》ToggleWindowsManager() if IsWinManagerVisible() call s:CloseWindowsManager() else call s:StartWindowsManager() close empty window

exe ‘q’ end

endfunction

更多请查看

:help winmanager

6.MiniBufExplorer

写程序的时候肯定会多个源文件同时编辑,像source insight就有个window list,保存了最近打开过的所有源文件。Vim通过buffer来达到类似的作用,buffer的命令操作包括

:ls 显示当前打开的所有文件

:bn 跳到下一个文件

:bp 跳到上一个文件

:bd 删除一个buffer

MiniBufExplorer插件提供了更直观的方式,将buffer显示在最上端的窗口内,窗口操作包括

《Tab》 向前循环切换到每个buffer名上

《S-Tab》 向后循环切换到每个buffer名上

《Enter》 在打开光标所在的buffer

d 删除光标所在的buffer

为了只在在源码窗口打开选中的buffer,需要设置miniBufExplModSelTarget,默认是关闭的,

let g:miniBufExplModSelTarget = 1

不过MiniBufExplorer还有个更重要的功能是可以实现用CTRL键加h|j|k|l方便地切换窗口,

let g:miniBufExplMapWindowNavVim = 1 用《CTRL-h|j|k|l》切换到上下左右窗口

7.OmniCppComplete

大部分IDE都支持自动补全功能,vim作为linux下优秀的编辑器当然不缺少,不过vim自带的补全功能,ctrl+n,ctrl+p可以再当前源文件中实现简单的补全功能,但这是远远不够的。OmniCppComplete利用了Ctags生成的tag数据库,实现了文件间名字补全,包括

命名空间(namespace),类(class),结构(struct)和联合(union)补全

函数属性成员和返回值类型补全

this指针成员补全

C/C++类型转换(cast)对象补全

类型定义(typedef)和匿名类型(anonymous types)补全

安装好后输入时键入ctrl+x ctrl+o就会补全当前名字,使用过IDE的同学都知道补全只要一个tab键就行了,按这么多键太麻烦了。这就需要supertab插件的帮助了,

Vim-addons install supertab

安装好后,设置以下选项,

let g:SuperTabRetainCompletionType=2

letg:SuperTabDefaultCompletionType=《C-X》《C-O》

SuperTabDefaultCompletionType设置tab键对应的命令,

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

SuperTabRetainCompletionType表示

0- 不记录上次的补全方式

1- 记住上次的补全方式,直到用其他的补全命令改变它

2- 记住上次的补全方式,直到按ESC退出插入模式为止

8.surround

在在编程时会遇到大量的匹对符号,如,(,{等等,高效地处理这些符号可以大大地提高编程效率,Surround正是处理这些符号的非常优秀等等插件。

Surround的使用非常简单明了(*代表当前光标位置):

插入符号

Hellow*orld! ysiw) Hello (world)!

或者

Hellow*orld! veS) Hello (world)!

替换

Hello*world! cs‘ ’Hello world!‘

删除

Hello*world! ds Hello world!

总结

至此,在安装了以上插件后,vim已经具备了强大的编辑功能。当然,这里只是列出一些基本插件,还有很多其他有趣又好用的插件,比如注释用的NERD_commenter.vim,高亮书签的VisualMark,头文件切换的a.vim等等,以后有机会再研究。

上面就是Ubuntu上安装vim插件的方法介绍了,安装插件后的vim将拥有更多的功能,以满足程序编辑的需要,如果你还没有安装这些vim插件,不妨为自己的系统安装下吧。

来源:https://www.tulaoshi.com/n/20160219/1604620.html

延伸阅读
标签: 电脑入门
Ubuntu系统操作中,Pacman是一款软件包管理器,能够对官方的Arch库和自己创建的软件包进行管理,但是有时在安装Pacman的时候会出错,下面图老师小编就给大家介绍下Ubuntu如何安装Pacman。 1,wget ‘ftp://ftp.archlinux.org/other/pacman/pacman-4.1.2.tar.gz’下载软件包 2,tar xvf pacman-4.1.2.tar.gz,解压缩软件 3,cd ...
标签: 电脑入门
Xtreme是使用广泛的Mod,可用于软件应用的下载,而在Ubuntu系统中,安装Xtreme需要使用命令,而很多人不知要如何安装,下面图老师小编就给大家介绍下Ubuntu安装Xtreme的方法,一起来学习下吧。 XTREME下载管理器旨在为您提供一个快速和安全的工具,用于管理所有的下载。采用了先进的动态分割算法,应用程序可以加快下载过程。 下载管理器支持H...
eclipse svn插件下载安装步骤   打开eclipse - Help -Install New Software选项,点击Add按钮;根据需要,添加自己需要的版本svn控制器的版本,填写name和url,点击ok。 Name: Subclipse 1.6.x (Eclipse 3.2+) URL: http://subclipse.tigris.org/update_1.6.x 点击Select All,全选后点击next。 选中接受li...
标签: 服务器
ubuntu u盘安装图解 ubuntu10.04 U盘安装教程 说到ubuntu,有接触linux的童鞋都应该听过,用wubi安装只是像在电脑上安装一个软件,可以轻松体验ubuntu,不过毕竟性能会打折扣,所以本人是比较喜欢直接安装在硬盘上的。 这种方法只适合用desktop下进行安装,不能在文本模式下,本人试过,没安装成功,具体原因没有去理了,呵呵。...
标签: 服务器
搞定LINUX之安装ubuntu   工欲善其事,必先有把刀,我们首要的任务是搭建一个完整的LINUX编程环境,我们选用来自美帝的ubuntu,建议选择一个LTS的版本,即长期支持版,比如ubuntu-12.04。 第一步,下载一个虚拟平台VMware,网址是https://www.vmware.com/support/ 第二步,安装VMware,附一张她的性感照片: 第三步...

经验教程

370

收藏

8
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部