簡體   English   中英

從命令行打開文件時使 vim 遵循符號鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM