vim - 使用来自多个目录和多个扩展名的 vim 打开头文件到 C/C++ 源文件

标签 vim header-files

首先,我准备在 vim 中写出一长串 if/else 语句,并意识到 1) 有一种更好的方法可以做我想做的事情 2) 所以在这个主题上得到帮助会很成熟。所以!我有各种各样的文件,比如

foo/src/file01.C
foo/src/file02.cc
foo/src/file03.c
foo/include/file01.hh
foo/include/file02.h
foo/include/file03.h

如果您注意到 C/H、cc/hh、c/h 扩展名可能匹配也可能不匹配,那么您很热心,我希望您能提供帮助。我看过类似 the following vim scripts 的东西来自 Vim wiki 的“在源文件和头文件之间轻松切换”,虽然我只在 a.vim 中转储了几个小时没有成功,但其他人似乎无法通过该页面上的文档工作。那么任何人都可以帮助解决如何进行这项工作吗?

我有一个很好的线索是快速 How to Easily Switch between Header and Source主题,但仍然无法使其工作。

我想我真正想要的是如何避免多个 if 语句并使用真正的匹配来做我想做的事。我想查看另一个目录,如果它是源 C/C++ 文件,则查找具有任何熟悉扩展名的同名头文件,或者如果它是头文件,则查找任何常规扩展名的源文件。谢谢你的帮助!

更新:我特别想在新选项卡中打开文件。我住在 vim 标签上!

最佳答案

为了确保我使用的是最新版本,我 downloaded the latest a.vim script (2.18) 并将其复制到我的 ~/.vim/plugin 中目录。

您可以在 ~/.vimrc 中定义某些变量获取文件 a.vim识别备用文件扩展名。

为了让示例中的文件与它们的替代文件相匹配,我在 ~/.vimrc 中添加了以下内容:

let g:alternateExtensions_C = "H,hh"
let g:alternateExtensions_hh = "C"

这些是允许您覆盖已定义内容的全局变量。你必须定义
两种关系(它们不能双向工作)。

您可以通过键入以下内容查看当前的映射:
:echo g:alternateExtensionsDict

如果您需要定义其他映射,请遵循相同的模式。下划线后面是您正在编辑的文件扩展名。双引号中的内容是以逗号分隔的备用扩展名列表。
let g:alternateExtensions_<ext> = "<list,of,alt,ext>"

如果您有不同的目录结构,您可以通过覆盖 g:alternateSearchPath 来定义要搜索的路径。多变的。 ../src../include默认情况下已经包含在内。
:echo g:alternateSearchPath

要在新选项卡中打开备用文件:
:AT

顺便说一句,a.vim脚本有很好的文档记录。你可能想打开它看看。我发现了一两个我不知道的设置,而且我已经使用它多年了;o)

我希望这有帮助。

关于vim - 使用来自多个目录和多个扩展名的 vim 打开头文件到 C/C++ 源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3385491/

相关文章:

unix - 在 vim 中跨 vim 实例移动缓冲区

c - 与c标准头对应的代码在哪里?

ios - 我们可以在 iPhone 的同一项目中的两个单独的 .mm 文件中使用两个头文件吗

c - 在 Vim 中运行程序并在同一窗口中输出

vim - Vim的隐藏功能

c++ - 给定源文件的 header "corresponding"是否有技术名称?

c++ - 只有 header 的 C++ 应用程序有什么问题?

c++ - 在 C++ 中为 hxx 文件创建 cxx 文件

vim - Vim-NERDTree-如何在NERDTree插件中打开隐藏的文件夹(.name)?

vim - 如何在 Vim CtrlP 中自定义线条高亮颜色?