代码之家  ›  专栏  ›  技术社区  ›  Haoshu

打开文件时如何简化包含“..”的文件路径

vim
  •  0
  • Haoshu  · 技术社区  · 1 年前

    我有一些 .h 中的文件 inc 文件夹及其对应的 .cpp 中的文件 lib 文件夹

    D:\gitroot\Project\inc\A.h
    D:\gitroot\Project\inc\B.h
    D:\gitroot\Project\lib\A.cpp
    D:\gitroot\Project\lib\B.cpp
    

    我想快速打开相应的 .cpp 处理时的文件 .h 文件,反之亦然,所以我把下面的映射放在vimrc中。

    map \tdc :tabnew %:h/../lib/%:t:r.cpp<CR>
    map \tdh :tabnew %:h/../inc/%:t:r.h<CR>
    

    问题是,当我使用它打开相应的文件时,选项卡的文件名是 Project\inc\..\lib\A.cpp 而不是 Project\lib\A.cpp .如何简化文件路径?

    1 回复  |  直到 1 年前
        1
  •  1
  •   chepner    1 年前

    您可以使用 :h 多次从路径中删除文件名和包含的子目录。

    map \tdc :tabnew %:h:h/lib/%:t:r.cpp<CR>
    map \tdh :tabnew %:h:h/inc/%:t:r.h<CR>
    

    (此用法的示例可在文档中找到;请参阅 :help filename-modifiers .)