VIM配置说明

vim 配色方案 colorscheme 详解

配置颜色可以到这里去下载

http://vim.sourceforge.net/scripts/script.php?script_id=625

下载网页下面的 ColorSamplerPack.zip 这个包

里面包含的颜色配置的预览可以在这里看见,每一个预览都有一个对应的配置的名字

http://www.vi-improved.org/color_sampler_pack/

比如我选择的 calmar256_light.vim 这个配色方案,它的预览效果是

http://www.vi-improved.org/color_sampler_pack/calmar256_light.vim.cpp.html

安装配色方案的方法是:

先在 ~ 目录下新建一个 .vim目录,里面有 colors 目录,

把你选择的配色方案的.vim 文件放在 .vim/colors 下面,

修改 .vimrc 配置,

加入以下代码

colorscheme calmar256-light

其中 calmar2556-light 就是color 配置文件的名字,

注意的是,有些配置文件要求更多,比如我使用的这个,

打开文件可以看到,还要求加入 set t_Co=256 才能使用,

目前感觉效果不错,如下图


vim自带了很多颜色主题,可以直接选取下面一行添加到vim配置文件当中,重新打开vim即可生效。

colorscheme elflord "我使用这个
colorscheme darkblue 
colorscheme evening 
colorscheme murphy 
colorscheme torte

colorscheme desert




Ctags

在源代码根目录下执行 ctags -R 命令用来为程序源代码生成标签文件,其-r选项表示递归操作,同时为子目录也生成标签文件。vim利用生成的标签文件,可以进行相应检索、并在不同的文件C语言元素之间来回切换。

在vim中ctags的简单使用
1) 跳转到指定的函数进入vim后,用 “:tag func_name“ 跳到函数func_name处。使用tag命令时,可以使用TAB键进行匹配查找,继续按TAB键向下切换。
某个函数有多个定义时

:tag
跳到第一个定义处,优先跳转到当前文件
:tnext
跳到第一个
:tfirst
跳到前count个
:[count]tprevious
跳到后count个
:[count]tnext
跳到最后一个
:tlast
你也可以在所有tagname中选择:
:tselect tagname 

如果想跳到包含block的标识符:“tag /block” 然后用TAB键来选择。这里'/'就是告诉vim 'block'是一个语句块标签。
2)用“CTRL + ]“快捷键,跳转到光标所在函数标识符的定义处。
3)使用“CTRL + T”退回上层。 如果想在以write_开头的标识符中选择一下, :tselect /^write_ 这里,'^'表示开头,同理,'$'表示末尾。多个同名的标识符。

Find this C symbol:
#查找指定的C符号
Find this global definition:
#查找指定的全局定义
Find functions called by this function:
#查找指定函数调用的函数
Find functions calling this function:
#查找调用指定函数的函数
Find this text string:
#查找字符串
Change this text string:
#修改指定字符串
Find this egrep pattern:
#查找匹配字符
Find this file:
#查找指定文件
Find files #including this file:
#指定引用头文件进行查找

在对应某一项中输入查找条件,回车即可进行查询,并将结果显示在显示面板。
应用实例
下面以使用cscope阅读内核源代码为例:

$ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.6.tar.bz2
#从Linux内核官网下载内核源代码
$ tar xvfj linux-2.6.27.6.tar.bz2
#解压文件
$ cd linux-2.6.27.6
#进入源代码根目录
$ ctags -R

#递归生成标签文件



VIM 代码折叠

VIM 代码折叠
VIM代码折叠方式可以用"foldmethod"选项来设置,如: set foldmethod=indent

有6种方式来折叠代码

1. manual //手工定义折叠
2. indent //用缩进表示折叠
3. expr  //用表达式来定义折叠
4. syntax //用语法高亮来定义折叠
5. diff   //对没有更改的文本进行折叠
6. marker //用标志折叠

 

vim 配置文件分为全局配置文件用户配置文件

1. 全局配置文件查找,在.vim 中输入:echo $VIM,一般为:/usr/share/vim/vimrc
2. 用户配置文件在用户主目录下,如:/home/abeen/.vimrc

在vimrc文件中设置折叠方式:如set foldmethod=indent

 

选定折叠方式后,就可以使用折叠命令进行折叠操作了.常用的折叠方式为indent和marker.

indent折叠命令
indent方式,vim会自动利用缩进进行折叠,我们可以使用现成的折叠成果.
我们可以在折叠处输入以下命令:

zc 折叠
zC 对所在范围内所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。

 

marker折叠命令
marker折叠方式时,我们需要用标计来标识代码的折叠,系统默认是{{{和}}}
折叠命令

zf 创建折叠,比如在marker方式下:
        zf56G,创建从当前行起到56行的代码折叠;
        10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠。
        10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。
        在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
zd  删除 (delete) 在光标下的折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zD  循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zE  除去 (Eliminate) 窗口里“所有”的折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。

 

折叠后效果图





Taglist配置

本节所用命令的帮助入口:

:help helptags
:help taglist.txt

上篇文章介绍了在VIM中如何使用tag文件,本文主要介绍如何使用taglist插件。

想必用过Source Insight的人都记得这样一个功能:SI能够把当前文件中的宏、全局变量、函数等tag显示在Symbol窗口,用鼠标点上述tag,就跳到该tag定义的位置;可以按字母序、该tag所属的类或scope,以及该tag在文件中出现的位置进行排序;如果切换到另外一个文件,Symbol窗口更新显示这个文件中的tag。

在VIM中的taglist插件所实现的就是上述类似的功能,有些功能比SI弱,有些功能比SI更强。而且,taglist插件仍在不断完善中!

要使用 taglist 插件,必须满足:

1. 打开VIM的文件类型自动检测功能;
2. 系统中装了Exuberant ctags工具,并且taglist能够找到此工具(因为taglist需要调用它来生成tag文件);
3. 你的VIM支持system()调用;

在本系列第3篇文章(vimrc初步)中,我们使用了VIM自带的示例vimrc,这个vimrc中已经打开了文件类型检测功能;在上篇文章中,我们也已用到了Exuberant ctags;system()调用在一般的VIM版本都会支持(只有suse Linux发行版中出于安全考虑,关闭了此功能),所以我们已经满足了这三个条件。

现在我们到http://www.vim.org/scripts/script.php?script_id=273下载最新版本的taglist plugin,目前版本是4.3。

下载后,把该文件在~/.vim/目录中解压缩,这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:

       plugin/taglist.vim – taglist插件

       doc/taglist.txt    - taglist帮助文件

:windows用户需要把这个插件解压在你的$VIM/vimfiles或$HOME/vimfiles目录。


使用下面的命令生成帮助标签(下面的操作在VIM中进行):

 

:helptags ~/.vim/doc

 

生成帮助标签后,你就可以用下面的命令查看taglist的帮助了:

 

:help taglist.txt

 

Taglist提供了相当多的功能,我的vimrc中这样配置:

 

   """"""""""""""""""""""""""""""
   " Tag list (ctags)
   """"""""""""""""""""""""""""""
   if MySys() == "windows"                "设定windows系统中ctags程序的位置
     let Tlist_Ctags_Cmd = 'ctags'
   elseif MySys() == "linux"              "设定windows系统中ctags程序的位置
     let Tlist_Ctags_Cmd = '/usr/bin/ctags'
   endif
   let Tlist_Show_One_File = 1            "不同时显示多个文件的tag,只显示当前文件的
   let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim
   let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist窗口

 

这样配置后,当你输入“:TlistOpen”时,显示如下窗口:


在屏幕右侧出现的就是taglist窗口,你从中可以看到在main.c文件中定义的所有tag:宏、定义、变量、函数等;你也可以双击某个tag,跳到该tag定义的位置;你还可以把某一类的tag折叠起来(使用了VIM的折行功能),方便查看,就像图中macro和variable那样。更多的功能,请查看taglist的帮助页,本文也会介绍一些常用功能。


下面介绍常用的taglist配置选项,你可以根据自己的习惯进行配置:

 

- Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置,如果它没在你PATH变量所定义的路径中,需要使用此选项设置一下;

- 如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;

- 设置Tlist_Sort_Type为”name”可以使taglist以tag名字进行排序,缺省是按tag在文件中出现的顺序进行排序。按tag出现的范围(即所属的namespace或class)排序,已经加入taglist的TODO List,但尚未支持;

- 如果你在想taglist窗口是最后一个窗口时退出VIM,设置Tlist_Exit_OnlyWindow为1;

- 如果你想taglist窗口出现在右侧,设置Tlist_Use_Right_Window为1。缺省显示在左侧。

- 在gvim中,如果你想显示taglist菜单,设置Tlist_Show_Menu为1。你可以使用Tlist_Max_Submenu_ItemsTlist_Max_Tag_Length来控制菜单条目数和所显示tag名字的长度;

- 缺省情况下,在双击一个tag时,才会跳到该tag定义的位置,如果你想单击tag就跳转,设置Tlist_Use_SingleClick为1;

- 如果你想在启动VIM后,自动打开taglist窗口,设置Tlist_Auto_Open为1;

- 如果你希望在选择了tag后自动关闭taglist窗口,设置Tlist_Close_On_Select为1;

- 当同时显示多个文件中的tag时,设置Tlist_File_Fold_Auto_Close为1,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。

- 在使用:TlistToggle打开taglist窗口时,如果希望输入焦点在taglist窗口中,设置Tlist_GainFocus_On_ToggleOpen为1;

- 如果希望taglist始终解析文件中的tag,不管taglist窗口有没有打开,设置Tlist_Process_File_Always为1;

- Tlist_WinHeightTlist_WinWidth可以设置taglist窗口的高度和宽度。Tlist_Use_Horiz_Window为1设置taglist窗口横向显示;

在taglist窗口中,可以使用下面的快捷键:

 

<CR>          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
<Space>       显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
<F1>          显示帮助

可以用“:TlistOpen”打开taglist窗口,用“:TlistClose”关闭taglist窗口。或者使用“:TlistToggle”在打开和关闭间切换。在我的vimrc中定义了下面的映射,使用“,tl”键就可以打开/关闭taglist窗口:

 

map <silent> <leader>tl :TlistToogle<cr>

Taglist插件还提供了很多Ex命令,你甚至可以用这些命令创建一个taglist的会话,然后在下次进入VIM时加载此会话。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值