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