vim-A

vim-A

 

软件版本:
  ubuntu10.04
  Linux version 2.6.32-42-generic
  VIM - Vi IMproved 7.2

目录:

  1. 简介
  2. 下载安装
  3. 使用
  4. 我所遇到的问题

1. 简介

  插件 A 的作用是提供一种快速的命令让我们在源码与头文件之间切换。

2. 下载安装

名称:A
下载地址:

http://www.vim.org/scripts/script.php?script_id=31

安装:把下载下来的 a.vim 放到 $HOME/.vim/plugin 目录下。
帮助::A switches to the header file corresponding to the current file being edited (or vise versa)
:AS splits and switches
:AV vertical splits and switches
:AT new tab and switches
:AN cycles through matches
:IH switches to file under cursor
:IHS splits and switches
:IHV vertical splits and switches
:IHT new tab and switches
:IHN cycles through matches
<Leader>ih switches to file under cursor
<Leader>is switches to the alternate file of file under cursor (e.g. on  <foo.h> switches to foo.cpp)
<Leader>ihn cycles through matches

3. 使用

  在普通模式下输入一下命令即可在源码与头文件之间进行切换。

  :A 在新 buffer 中切换;
  :AS 水平分割式切换;
  :AV 垂直分割式切换;
  :AT 新建页标签,然后切换;
  :AN 如果在指定目录下有多个同名的 c/h 文件,循环切换;』
  :IH 创建新 buffer 切换到光标下的文件;
  :IHS 同上,且创建水平窗口;
  :IHV 同 :IH,且创建垂直窗口;
  :IHT 同 :IH,切换到新建页标签;
  :IHN 同 :IH,循环切换;
  <Leader>ih 同 :IH;
  <Leader>is 功能相当于是 :IHS + :A 。效果是切换到光标下的头文件对应的源文件中。
  <Leader>ihn 同 :IHN;

  我在用这个插件的时候有一个疑惑,它是怎么搜索我的头和源文件?为此我做了一些的尝试,发现它有时候就能匹配到对应的头文件,但换成其它目录下的文件又不行。查看 a.vim 后找到 g:alternateSearchPath 这个变量,它用来搜索指定搜索目录,默认包括:../source;../src;../include;../inc。巧合的是我的目录结构中又刚好符合这个要求。现在我们可以根据各自的需要在 .vimrc 中通过 g:alternateSearchPath变量控制插件 A 的搜索目录。默认的设置为:

let g:alternateSearchPath = 'sfr:../source,sfr:../src,sfr:../include,sfr:../inc'

   要注意的是,每个目录都必须用 “str: ” 开头;目录间用逗号分割。

4. 我所遇到的问题

  我遇到一个问题,就是 <Leader>is 这个按键已经被 c-support 使用了,原因是我将 g:C_MapLeader 与 mapleader 都设置为“;”。每次启动 [g]vim 都会提示:

Mapping already in use: "<LocalLeader>is", mode "n"
Mapping already in use: "<LocalLeader>is", mode "i"

  所以我将 <Leader>is 改为 <Leader>ihsa 。

转载于:https://www.cnblogs.com/eddy-he/archive/2012/09/18/vim_A.html

vim-switchtoinc 这是一款vim插件,用于头文件和源文件间快速切换。注:在a.vim插件基础上修改的。特性 支持多种语言(所有具备头文件的语言),主要支持为c, cpp, objective-c, objective-cpp等 支持绝对路径进行查找 支持源文件为基准的相对路径查找 支持regex替换路径 支持自定义项目目录,批量初始化目录后使用(推荐) 安装 可以直接克隆下来丢在vim的插件目录,但我推荐用插件管理器进行管理,下面是各种插件管理器:Pathogen git clone https://github.com/liwangmj/vim-switchtoinc.git ~/.vim/bundle/vim-switchtoinc vim-plug Plug 'liwangmj/vim-switchtoinc' NeoBundle NeoBundle 'liwangmj/vim-switchtoinc' Vundle Plugin 'liwangmj/vim-switchtoinc' 使用 切换到当前文件的源文件或则头文件::A 同上,但在上面基础上会水平分栏进行打开::AV 打开当前文件的源文件或头文件,并会垂直分栏进行打开::AS 多个重名文件之间的切换::AN 初始化查找目录(只在用最后一种方式前使用,其他方法不用)::SearchIncAndSrcPath设置 需要设置源文件和头文件的查找目录,通过 g:alternateSearchPath 来设置。 基于源文件的相对路径查找(如下是默认值):let g:alternateSearchPath = 'sfr:../source,sfr:../src,sfr:../include,sfr:../inc' 基于绝对路径查找(例子):let g:alternateSearchPath = 'abs:/home/my/myporject/inc,abs:/home/my/myproject/src' 基于vim正则表达式查找(例子):let g:alternateSerchPath = 'reg:/inc/src/g/, reg:/src/inc/g/' 以上方法都比较有局限性,因为只能针对单条路径(正则)或单个目录进行查找,下面的方法相对麻烦一点,但一劳永逸,不用担心可恶的目录问题: 先设置项目的根目录(例子): let g:iSearchProjectPath = '/home/my/myproject'let g:iSearchPathName = [            \'src', 'Src', 'SRC',            \'inc', 'Inc', 'INC',            \'source', 'Source', 'SOURCE',            \'include', 'Include', 'INCLUDE',            \'my_inc', 'my_inc'\] 再调用 SearchIncAndSrcPath 进行初始化查找目录: :SearchIncAndSrcPath 然后可以用:A :AV :AS 进行切换了。 最后说一下,最新版本更新: 第一次调用:A :AV :AS,插件内部会自动执行一次 SearchIncAndSrcPath,只需直接切换即可,不用单独执行。 另外,如果在使用vim过程中相关文件目录有更改,可以通过执行一次SearchIncAndSrcPath来更新,但值得注意的是:之前打开过的文件切换信息由于存在缓存无法更新,需要重启vim才能生效! 推荐按键绑定autocmd FileType c,cpp,objc,objcpp nmap <silent> <F4> :wall<CR>:A<CR>autocmd FileType c,cpp,objc,objcpp nmap <silent> <C-F4> :wall<CR>:AV<CR>autocmd FileType c,cpp,objc,objcpp nmap <silent> <S-F4> :wall<CR>:AS<CR>autocmd FileType c,cpp,objc,objcpp nmap <silent> <Leader>an :wall<CR>:AN<CR>autocmd FileType c,cpp,objc,objcpp nmap <silent> <Leader>as :wall<CR>:SearchIncAndSrcPath<CR>谢谢 欢迎使用,祝使用愉快
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值