从命令行打开文件时使 vim 遵循符号链接
Make vim follow symlinks when opening files from command line
我是一个巨大的 vim 爱好者,但我找不到让 vim 在打开文件时跟随 symlinks 的方法。
例如,我家目录中的所有点文件都被符号link编辑到 .zprezto 目录中:
.vimrc -> ~/.zprezto/runcoms/vimrc
.zshrc -> ~/.zprezto/runcoms/zshrc
我将我的 .zprezto 分支保存在私人 git 存储库中,然后用于使我所有的 Mac/Linux 机器和服务器保持同步。每当我编辑 vim 中的任何这些文件时,我用于 git 管理的插件 none 都能正常工作,因为我正在访问的 symlink当调用 vim ~/.zshrc
时在 git 存储库之外。当我从命令行打开它时,是否有任何方法可以强制 vim 跟随 link 并打开实际文件,以便缓冲区位于 git 存储库中?
试过这个:
function vim() {
local ISLINK=`readlink `
/usr/local/bin/vim ${ISLINK:-}
}
但它没有像我希望的那样工作,因为它将我限制在一个没有选项的文件中。在我着手编写一个可以考虑所有边缘情况的大型包装函数之前,我想知道是否有更明智的方法来做到这一点。
所以看起来 vim 中没有任何内置功能允许这样做。我试了一下 wrapper 函数,结果发现它比我想象的要容易一些。这是最终结果:
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 plugin,它允许您在打开文件时自动跟随符号链接。
我是一个巨大的 vim 爱好者,但我找不到让 vim 在打开文件时跟随 symlinks 的方法。
例如,我家目录中的所有点文件都被符号link编辑到 .zprezto 目录中:
.vimrc -> ~/.zprezto/runcoms/vimrc
.zshrc -> ~/.zprezto/runcoms/zshrc
我将我的 .zprezto 分支保存在私人 git 存储库中,然后用于使我所有的 Mac/Linux 机器和服务器保持同步。每当我编辑 vim 中的任何这些文件时,我用于 git 管理的插件 none 都能正常工作,因为我正在访问的 symlink当调用 vim ~/.zshrc
时在 git 存储库之外。当我从命令行打开它时,是否有任何方法可以强制 vim 跟随 link 并打开实际文件,以便缓冲区位于 git 存储库中?
试过这个:
function vim() {
local ISLINK=`readlink `
/usr/local/bin/vim ${ISLINK:-}
}
但它没有像我希望的那样工作,因为它将我限制在一个没有选项的文件中。在我着手编写一个可以考虑所有边缘情况的大型包装函数之前,我想知道是否有更明智的方法来做到这一点。
所以看起来 vim 中没有任何内置功能允许这样做。我试了一下 wrapper 函数,结果发现它比我想象的要容易一些。这是最终结果:
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 plugin,它允许您在打开文件时自动跟随符号链接。