gpt4 book ai didi

vim 设置工作目录

转载 作者:行者123 更新时间:2023-12-04 15:26:12 29 4
gpt4 key购买 nike

当我在 Vim 中切换缓冲区时(使用 :bn 和 :bp),我希望它自动设置工作目录,但不是打开文件的目录。我希望 Vim 向上递归搜索名为“tags”的文件,当它找到该文件时,将工作目录设置为带有“tags”文件的目录。

例子:

:e ~/programming/projects/foobar/src/js/scripts.js

正如你所看到的,“foobar”是一种“项目根”。让我们假设“标签”文件在 foobar 目录中。现在 Vim 应该查看 "js",但没有标签文件。然后它应该在“src”中查找,那里没有标签文件。然后它应该查看“foobar”并找到“tags”文件,然后执行:
:cd ~/programming/projects/foobar/

有没有一种简单的方法可以做到这一点? :)

最佳答案

如果您的重点是获得正确的“标签”文件,那么这可以更容易地完成:

set tags=./tags,tags;$HOME/programming,$HOME/programming/your/global/tags

tags option 接受逗号(或空格)分隔的条目列表。在我的示例中,我有以下条目:
  • ./tags这意味着它应该首先查找 tags -当前目录下的文件
  • tags;$HOME/programming这意味着寻找 tags -file 从当前目录到 $HOME/programming (这就是分号的作用,见 file-searching )。如果您没有使用分号指定“停止”目录,那么它会搜索到根目录 /
  • $HOME/programming/your/global/tags最后,这是一个由绝对文件名引用的标签文件

  • 从你的描述来看,我的例子可能对你的目的来说太过分了,你只需要这个:
    set tags=tags;$HOME/programming

    但是如果你真的需要更改工作目录,那么你可以在你的 .vimrc 中添加这样的内容(如果需要,将 lcd 更改为 cd):
    au BufNewFile,BufRead *.js execute ":lcd " . fnamemodify(findfile("tags", ".;"), ":p:h")

    关于vim 设置工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7702117/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com