vim + ctags + taglist配置和使用 【及】 一键安装 ctags和cscope的方法 【及】vim语法高亮,自动缩进,python 自动缩进设置

来源:互联网 发布:淘宝经营许可证备案 编辑:程序博客网 时间:2024/05/17 06:27

1, vim + ctags + taglist配置和使用

taglist依赖于ctags,所以要先装ctags,否则taglist装了也没法用!

1、首先安装ctags

首先是ctags的安装,推荐使用exuberant ctags,我们可以从其官方网站上下载它的源码包,进行解压缩,编译,安装即可。
1)ubuntu安装
sudo apt-get install exuberant-ctags

( 或者下载 手动安装 download ctags-5.8.tag.gz (地址)

    tar xzvf ctags-5.8.tag.gz

    cd ctags-5.8

    ./configure

    sudo make

    sudo make install

)

至此,ctags的安装已经完成,可以使用ctags命令来检测时候完成安装。

检测:

在自己的项目文件夹下执行 $ctags -R *  (不执行就起不到效果)   
注:“-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件, 当用户在当前目录中运行vi时,会自动载入此tags文件。
然后就可以入手了。
常用的命令:
熟练的使用ctags仅需记住下面七条命令:(很简单吧,呵呵)
       1. $ ctags –R *    ($ 为Linux系统Shell提示符)
       2.   $ vi –t tag       (请把tag替换为您欲查找的变量或函数名)
       3. :ts                (ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)
       4. :tp                (tp 助记字:tags preview)---此命令不常用,可以不用记
       5. :tn                (tn 助记字:tags next) ---此命令不常用,可以不用记
       6. Ctrl + ]
       7. Ctrl + T


2、安装taglist 

下面我们来进行taglist的安装,同ctags的安装一样这里我们也是去其官方网站下载解压其源码包。

具体步骤如下:

下载地址 

解压文件
# unzip -d    taglist taglist_45.zip // 解压到 taglist

   我们首先在家目录下创建.vim文件(mkdir .vim)   以便于存放vim的插件。
然后把我们下载到的taglist源码包进行解压,把其中的doc和plugins目录拷贝到.vim文件夹下。
进入到vim在命令模式下输入helptaglist~/.vim/doc即完成了taglist的安装。在vim中输入Tlist,如果出现如下画面则证明安装成功。


也可以这样 配置
$cd taglist/
$cp doc/taglist.txt /usr/share/vim/vim72/doc/
$cp plugin/taglist.vim /usr/share/vim/vim72/plugin/ 
基本上配置完成
启动vim,用 “:helptags .”来配置好帮助文件
重启vim,用“:TlistToggle”来打开和关闭taglist窗口。
可以用“:help taglist”来获得更多帮助信 
若要默认打开taglist,_vimrc中加入

let Tlist_Auto_Open=1

set tags=tags;

set autochdir;

  注意第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目 录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。



完成了taglist和ctags的安装,但是这时ctags和taglist还没有联系起来。为此,我们需要修改~/.vim/plugin/taglist.vim文件,找到if !exitsts(loaded_taglist)这一行,并在其前面添加let Tlist_Ctags_Cmd="/usr/local/bin/ctags"
ps:在这里需要注意的是我们在设置直线需要察看我们ctags可执行可执行路径到底是在哪里,我们可以进入到上述目录,一直找到具体的可执行的文件ctags,并将其路径赋给Tlist_Ctags_Cmd(例如我的路径是/usr/local/bin/ctags/ctags
vim+taglist+ctags阅读代码
为了使用vim+taglist+ctags来阅读代码,我们首先必须生成函数和变量的符号信息。这一步我们使用ctags完成。
例如我们使用我们刚才下载的ctags的源码包为例。
//生成tag
执行 ctags -R *(-R递归作用)
//检查是否生成了tags
ls -l tags
生成tag以后我么就可以进行察看了,具体步骤见如下截图



vim输入:TlistToggle来打开侧面窗口 (或者直接:Tlist、TlistOpen也可以)


使用ctr 和两次w在侧窗口和主窗口之间进行切换

 
移动到土体的函数后,按enter键察看具体函数。(可以利用ctags的特性在鼠标指定处比如"apue.h",Nomal 输入 gf,转到头文件"apue.h")

 
 有时我们想察看的函数在其他代码文件中定义,这是我们只要将光标定位到想察看的函数上,然后按ctr+]键就可以进行察看了,按ctr+O可以跳回到源文件中。

具体 vim 高阶应用见 http://easwy.com/blog/archives/advanced-vim-skills-catalog/


第一步要达到效果是不是很麻烦,下面介绍一种简单的方法

2, 一键安装 ctags和cscope的方法

用vim的插件搭建一个类似sourceinsight的vi,同时加了一些vim及脚本,最近看到很多人想要有sourceinsight功能的vim,由于整个配置还是有点麻烦,于是将配置的vim发上来,只需一条命令,就可安装完ctagslist,cscope,fielexporeer等插件,达到sourceinsight的效果。

安装过程:

大家下载附件,然后解压,然后切到解压后的文件夹,
执行sudo ./install即可(注意安装前备份好自己的vimrc 防止之前你的某些设置丢失,便于查找)。
然后执行sudo apt-get  install vim

或者这样安装:
#Clone repository:
git clone https://github.com/ustcdane/vim_install.git
#install
cd vim_install
sudo ./install (注意会把之前配置的.vimrc文件覆盖,使用此命令前对自己的.vimrc进行备份)

可能会出现错误:
"Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. 
Plugin is not loaded."

没有关联Ctags和Taglist

在~/.vimrc中加入 : let Tlist_Ctags_Cmd='/usr/bin/ctags'

其实我已经在 install 中加入了,如果还是出现错误,则找到你的可执行程序ctags 所在处手动的在~/.vimrc中加入let Tlist_Ctags_Cmd='你的ctags路径'

使用指南:

当我们需要阅读代码时,必须先生成tags文件和cscope.out文件,这个可以通过已安装程序中的脚本自动生成
比如你要阅读source文件夹下的代码就使用cs source
当source下有文件更新了,你可以使用 cs source -u来更新

常用命令:

进入vim后
wm打开ide界面,再次wm就关闭了
ctrl+w在各个窗口切换
ctrl+h切换到左边的窗口
ctrl+j切换到下面的窗口
ctrl+l切换到右边的窗口
ctrl+k切换到上面的窗口
ctrl+]函数跟踪


快捷键 cs f s/g/....

s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文
当然在底行模式下介键入 help 会弹出 vim的帮助。

使用cscope查找do_fork函数的定义:
在vim命令行下执行:

:cs f g do_fork

就可以查看do_fork的全局定义了。

cscope常用快捷键:

先按 ctrl+\ 然后 再按以下键:  

ctrl+]:在函数调用的地方跳转到函数定义的地方
ctrl+t:返回上一个查找的地方


这个方法是从网上学到的,并作了部分修改


3, 设置vim语法高亮显示和自动缩进

1、配置文件的位置在目录 /etc/vim 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc” , (如果你使用第二中的一键安装 ctags和cscope的方法 建议 在自己的家目录下的.vimrc 相应修改) 。例如,/root目录下,通常已经存在一个.vimrc文件。
       2、设置语法高亮显示
1) 打开vimrc,添加以下语句来使得语法高亮显示:
    syntax on
2) 如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:
     export TERM=xterm-color
      
       3、设置Windows风格的C/C++自动缩进(添加以下set语句到vimrc中)
              1)设置(软)制表符宽度为4:
                            set tabstop=4
                            set softtabstop=4
              2)设置缩进的空格数为4
                          set shiftwidth=4
              3)设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
                    set autoindent
              4)设置使用 C/C++ 语言的自动缩进方式:
                          set cindent
              5)设置C/C++语言的具体缩进方式(以我的windows风格为例):
                            set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
              6)如果想在左侧显示文本的行号,可以用以下语句:
                          set nu
            7)最后,如果没有下列语句,就加上吧:
                    if &term=="xterm"
                         set t_Co=8
                         set t_Sb=^[[4%dm
                         set t_Sf=^[[3%dm
                    endif



总结, 需要添加的内容:
A,语法高亮在/etc目录下的profile文件中添加以下语句:
export TERM=xterm-color

B,其它 在 /etc/vim/vimrc的 添加:

[plain] view plain copy 在CODE上查看代码片派生到我的代码片
  1. syntax on  
  2. set nu  
  3. set tabstop=4  
  4. set softtabstop=4  
  5. set shiftwidth=4  
  6. set cindent  
  7. set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s  
  8.   
  9. if &term=="xterm"  
  10.      set t_Co=8  
  11.      set t_Sb=^[[4%dm  
  12.      set t_Sf=^[[3%dm  
  13. endif  
  14.   
  15. hi Comment ctermfg=6  



Other:
 vim python 的自动缩进设置方法。
缩进设置最常用的是:
:filetype indent on它将开启针对文件具体类型的缩进
与TAB相关的变量表变量名缩写含义tabstop=Xts编辑时一个TAB字符占多少个空格的位置。shiftwidth=Xsw使用每层缩进的空格数。(no)expandtab(no)et是否将输入的TAB自动展开成空格。开启后要输入TAB,需要Ctrl-V<TAB>softtabstop=Xsts方便在开启了et后使用退格(backspace)键,每次退格将删除X个空格(no)smarttab(no)sta开启时,在行首按TAB将加入sw个空格,否则加入ts个空格。

根据上面的准则,我们可以将下述设置加入到~/.vimrc中:

<div class="dp-highlighter bg_plain" style="font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; width: 857.328px; overflow-x: auto; overflow-y: hidden; padding-top: 1px; text-align: left; margin: 18px 0px !important; position: relative; background-color: rgb(231, 229, 220);"><div class="bar" style="padding-left: 45px;"><div class="tools" style="padding: 3px 8px 10px 10px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; border-left: 3px solid rgb(108, 226, 108); background-color: rgb(248, 248, 248);"><strong>[plain]</strong> <a target=_blank href="http://blog.csdn.net/daniel_ustc/article/details/8299096#" class="ViewSource" title="view plain" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_plain.gif"); background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: left top; background-repeat: no-repeat;">view plain</a><span data-mod="popu_168"> <a target=_blank href="http://blog.csdn.net/daniel_ustc/article/details/8299096#" class="CopyToClipboard" title="copy" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url("images/default/ico_copy.gif"); background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: left top; background-repeat: no-repeat;">copy</a></span><span data-mod="popu_169"> </span><span class="tracking-ad" data-mod="popu_167"><a target=_blank href="https://code.csdn.net/snippets/155362" target="_blank" title="在CODE上查看代码片" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: 0px; background-image: none; background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: left top; background-repeat: no-repeat;"><img src="https://code.csdn.net/assets/CODE_ico.png" alt="在CODE上查看代码片" style="border: none; max-width: 100%; position: relative; top: 1px; left: 2px;" width="12" height="12" /></a></span><span class="tracking-ad" data-mod="popu_170"><a target=_blank href="https://code.csdn.net/snippets/155362/fork" target="_blank" title="派生到我的代码片" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: 0px; background-image: none; background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: left top; background-repeat: no-repeat;"><img src="https://code.csdn.net/assets/ico_fork.svg" alt="派生到我的代码片" style="border: none; max-width: 100%; position: relative; top: 2px; left: 2px;" width="12" height="12" /></a></span></div></div><ol start="1" style="margin: 0px 0px 1px 45px !important; padding: 0px; border: none; list-style: decimal; color: rgb(92, 92, 92); background-color: rgb(255, 255, 255);"><li class="alt" style="margin: 0px !important; padding: 0px 3px 0px 10px !important; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; background-color: rgb(255, 255, 255);"><span style="color:black;margin: 0px; padding: 0px; border: none; background-color: inherit;"><span style="color:black;margin: 0px; padding: 0px; border: none; background-color: inherit;">filetype indent on  </span></span></li><li style="margin: 0px !important; padding: 0px 3px 0px 10px !important; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); list-style: decimal-leading-zero outside; color: rgb(92, 92, 92); line-height: 18px; background-color: rgb(248, 248, 248);"><span style="color:black;margin: 0px; padding: 0px; border: none; background-color: inherit;">autocmd FileType python setlocal et sta sw=4 sts=4  </span></li></ol></div><span class="nu0"><span style="font-size:14px;">第一行开启自动的缩进检测。最后一行则根据Python语言的建议(将tab展成四个空格)进行了专门设置。</span></span>
好了,你可试下了~~
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 贴门槛石瓷砖贴多了要怎么办 建设银行中职学生资助卡丢了怎么办 建行网银u盾丢了怎么办 深水区换气时喝了口水怎么办 撞到别人车了 我走了 怎么办 自己班同学被自己取好多外号怎么办 刚学会走路的宝宝脚外八字怎么办 宝宝两岁走路膝盖弯曲不直怎么办 一岁多的宝宝走路o型腿怎么办 21个月的宝宝走路o型腿怎么办 宝宝十一个月了0型腿怎么办 14个月宝宝o型腿怎么办 深蹲了三个月大腿变粗了怎么办 脚踢球时被踢肿了变紫了怎么办 没钱去健身房想要练出好身材怎么办 群里有人发反政府视频怎么办 部队取消番号后之前军人档案怎么办 新疆武警黄金部队新兵改革后怎么办 别人偷了自己的东西没有证据怎么办 家里项链被邻居偷了没有证据怎么办 知道是谁偷钱都是没有证据怎么办 武警驾照开地方车被交警拦了怎么办 双手擦了纤体瘦身膏辣疼怎么办 乳房全切术后切口裂开化脓怎么办 擦了锁水的霜之后出汗怎么办 用完瘦脸霜感觉脸部又痒又烧怎么办 嘴角起好多的小炮泡怎么办快好 DNF龙腾光环领错角色怎么办 海盗来了卡在新手奖励怎么办 海盗来了获得新手奖励卡了怎么办 魔域帐号忘了哪个区的了怎么办 魔域口袋版幻兽栏满了怎么办 苹果平板的密码和邮箱都忘了怎么办 二级报名忘了邮箱和密码怎么办 用身份证买的手机号变成空号怎么办 魔域口袋版背包幻兽满了怎么办? 魔域宝宝转世满了还不变雷怎么办 魔域口袋版家族试炼士气不足怎么办 聚水潭暂存位没有箱号怎么办? 长时间不锻炼运动后浑身酸痛怎么办 体脂称身体年龄比实际年龄大怎么办