vim插件之快速切换头(.h)/源(.c,.cpp,.cc)文件——a.vim

本文介绍Vim插件a.vim的安装与使用方法,帮助用户轻松实现在头文件和源文件间的快速切换。支持多种切换命令及快捷键操作,适用于Vim 7.2及以上版本。
vim插件之快速切换头(.h)/源(.c,.cpp,.cc)文件——a.vim
1. 官网
     当前最新版本:v2.18,更新日期: 2007-06-07  

2.概述
    浏览/编辑代码的时候,常常需要在头文件(.h)和源文件(.c,.cpp,.cc...)之间切换,或者打开某个包含文件(如#include ...),a.vim正是用来满足以上需求的一款Vim插件。  

3. 安装
  • 手动安装:下载a.vim后拷贝至Vim插件目录(一般为~/.vim/plugin),必要时再重启一下Vim就可以使用了。
  • 自动安装:(使用Vundle插件管理器)
    • Bundle ‘a.vim’
    • BundleInstall
4. 使用
  • 头/源文件切换命令
    • :A 头文件/源文件切换
    • :AS 分割窗后并切换头/源文件(切割为上下两个窗口)
    • :AV 垂直切割窗口后切换头/源文件(切割为左右两个窗口)
    • :AT 新建Vim标签式窗口后切换
    • :AN 在多个匹配文件间循环切换
    • 将光标所在处单词作为文件名打开
    • :IH 切换至光标所在文件
    • :IHS 分割窗口后切换至光标所在文件(指将光标所在处单词作为文件名打开)
    • :IHV 垂直分割窗口后切换
    • :IHT 新建标签式窗口后切换
    • :IHN 在多个匹配文件间循环切换
  • 快捷键操作
    • <Leader>ih 切换至光标所在文件*
    • <Leader>is 切换至光标所在处(单词所指)文件的配对文件(如光标所在处为foo.h,则切换至foo.c/foo.cpp...)
    • <Leader>ihn 在多个匹配文件间循环切换
  • *<Leader>指Vim所定义的映射(map)前缀,在Vim配置文件中可过变量'mapleader'进行设置,缺省为'\'。
5. a.vim的改进
由于经常在linux下写c,遇到了和大家一样的问题,就是经常需要在头文件和源代码之间跳转。由于两个文件不在同一个目录上,于是每次都是要直接打:e ../include/model/foo.h之类的。
    后来在网上查到a.vim可以实现这个功能,于是马上down下来。经过实验和看源码发现,a.vim仅仅支持头文件和源码在当前路径,以及../source ../src ../include ../inc这4个目录下面。但是经常会有这样的目录结构:
prject:
  |---model_a
  |---model_b
  |---include
        |---model_a
        |---model_b
 
对于这样的结构除非设置g:alternateSearchPath,否则没有办法。于是花了点时间对a.vim动个手术。改进如下:
1.找到 EnumerateFilesByExtensionInPath函数
2.增加一行代码:
let parentPath = expand("%:p:h:t")
 
3.在 if (pathSpec != "")之后添加如下代码:
 
let path = <SID>ExpandAlternatePath(pathSpec . "/" . parentPath, a:relPathBase)
  let pe = EnumerateFilesByExtension(path, a:baseName, a:extension)
if (enumeration == "")
    let enumeration = pe
else
    let enumeration = enumeration . "," . pe
endif
 
哈哈,以后在文件之间切换就方便了。
 
BTW: Vim中CTL+^可以在两个文件之间来回切换,等同:e #。这样就不用敲命令了。
 
该插件要求VIM 7.2 以上
本文来源(有部分修改): http://blog.163.com/023_dns/blog/static/1187273662012123104319662/
改进部分引用自: http://blog.chinaunix.net/uid-1720597-id-84773.html
本文历史:
2015.1.12     v1     XA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值