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

https://blog.youkuaiyun.com/zhangsming/article/details/42652695

 

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

1. 官网

    官方网址:http://www.vim.org/scripts/script.php?script_id=31

    当前最新版本: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、付费专栏及课程。

余额充值