[英]Make vim follow symlinks when opening files from command line
我是一个巨大的 vim 爱好者,但我找不到让 vim 在打开文件时遵循符号链接的方法。
例如,我的主目录中的所有点文件都被符号链接到 .zprezto 目录中:
.vimrc -> ~/.zprezto/runcoms/vimrc
.zshrc -> ~/.zprezto/runcoms/zshrc
我将 .zprezto 的分支保存在一个私有 git 存储库中,然后用于使我所有的 Mac/Linux 机器和服务器保持同步。 每当我在 vim 中编辑这些文件中的任何一个时,我用于 git 管理的插件都无法正常工作,因为我在调用vim ~/.zshrc
时访问的符号链接在 git repo 之外。 当我从命令行打开文件时,是否有任何方法可以强制 vim 跟随链接并打开实际文件,以便缓冲区位于 git repo 中?
试过这个:
function vim() {
local ISLINK=`readlink $1`
/usr/local/bin/vim ${ISLINK:-$1}
}
但它并没有像我希望的那样工作,因为它将我限制在一个没有选项的文件中。 在我开始编写一个可以考虑所有边缘情况的大型包装函数之前,我想知道是否有更明智的方法来做到这一点。
所以看起来vim中没有内置任何东西来允许这样做。 我玩了包装函数,结果比我想象的要容易一些。 这是最终结果:
function vim() {
args=()
for i in $@; do
if [[ -h $i ]]; then
args+=`readlink $i`
else
args+=$i
fi
done
/usr/local/bin/vim -p "${args[@]}"
}
只需添加到您的.zshrc
(或您最喜欢的 shell 的配置文件)中即可使用它。
有一个名为 vim-symlink 的 Vim插件,它允许您在打开文件时自动跟踪符号链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.