【发布时间】:2021-04-02 21:59:57
【问题描述】:
我是 vim 的狂热爱好者,但我找不到让 vim 在打开文件时跟随符号链接的方法。
例如,我的主目录中的所有点文件都符号链接到 .zprezto 目录中:
.vimrc -> ~/.zprezto/runcoms/vimrc
.zshrc -> ~/.zprezto/runcoms/zshrc
我将 .zprezto 的 fork 保存在一个私人 git 存储库中,然后用于使我的所有 Mac/Linux 机器和服务器保持同步。每当我在 vim 中编辑任何这些文件时,我用于 git 管理的插件都无法正常工作,因为我在调用 vim ~/.zshrc 时访问的符号链接在 git 存储库之外。当我从命令行打开它时,有什么方法可以强制 vim 跟随链接并打开实际文件,以便缓冲区在 git repo 中?
试过这个:
function vim() {
local ISLINK=`readlink $1`
/usr/local/bin/vim ${ISLINK:-$1}
}
但它并没有像我希望的那样工作,因为它将我限制在一个没有选项的文件中。在我开始编写一个可以考虑所有边缘情况的大型包装函数之前,我想知道是否有更明智的方法。
【问题讨论】:
-
您要解决什么问题? Vim 似乎在这里很好地遵循符号链接。
-
也许很笨,但为什么不运行
vim ~/.zprezto/runcoms/zshrc呢?另外,这个问答可能是相关的(假设我正确理解了你的问题):stackoverflow.com/questions/708700/… -
@DanCornilescu 在我发布问题之前看到了该链接 - 在符号链接目录中运行良好,但不适用于编辑符号链接文件。调用
vim ~/.zprezto/runcoms/zshrc效果很好,但文件不在每台机器上的那个目录中,而符号链接在所有机器上都位于~/.zshrc。这意味着我可以使用这个 git repo 在任何机器上运行vim ~/.zshrc,并且仍然可以获得我想要的文件,而不必先在机器上计算出 repo 的位置。 -
@lcd047 它遵循符号链接并打开文件,但是vim中缓冲区的位置是符号链接的位置而不是物理文件,这意味着就缓冲区而言,它不在 git repo 中,而是在主目录中。
-
也许尝试将配置 git repos 移动到所有机器上的同一位置?除非你真的,真的想写那个庞大的包装器:)