我是一个巨大的vim爱好者,但是我找不到打开文件时让vim遵循符号链接(symbolic link)的方法。

例如,我的主目录中的所有点文件都被符号链接(symbolic link)到.zprezto目录中:

.vimrc -> ~/.zprezto/runcoms/vimrc
.zshrc -> ~/.zprezto/runcoms/zshrc

我将.zprezto的分支保留在一个私有(private)的git repo中,然后将其用于使我的所有Mac/Linux机器和服务器保持同步。每当我在vim中编辑这些文件中的任何一个时,我用于git管理的插件均无法正常工作,因为调用vim ~/.zshrc时访问的符号链接(symbolic link)不在git repo之外。当我从命令行打开vim时,有什么方法可以迫使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的配置文件)即可使用它。

关于linux - 从命令行打开文件时,使vim遵循符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30791692/

10-16 19:09