たけっぱ横丁

the technical document for Vim(Editor), Natural Language Proecssing(NLP) tools and Programming(Python, Ruby, C++ etc).

Vimでシンボリックを辿る

シンボリックリンクファイルの編集方法

シンボリックを編集するとき,皆さんどうしてますでしょうか?

vimではシンボリックリンクのファイルを編集するとき パスの展開は行われずに編集が開始されます.

僕はdotfilesをクローンしてきて, それをシンボリックリンク
home以下においているのですが,

fugitiveを利用しようと思うとフルパスではないと行けないため, これが意外と面倒に思うわけです

本日はそんな人のためにシンボリックリンクをたどって ファイルを編集する方法を示します.

ファイルのフルパスを得て,編集を行う

現在のバッファについて, そのパスからシンボリックファイルをたどった パスを得るには以下のコマンドです

:echo resolve(expand('%'))

resolve, expandについては:h resolve等で確認してみてください.

シンボリックリンク先のファイルを編集したい場合は以下のコマンド

:e <C-R>=resolve(expand('%'))

便利なシンボリックファイルのリンク先編集コマンド

さっきのものをこれをいちいち入力するのは面倒ですね. .vimrcにコマンドとして以下の書いてしまいましょう

command! FollowSymlink call s:SwitchToActualFile()
function! s:SwitchToActualFile()
    let l:fname = resolve(expand('%:p'))
    let l:pos = getpos('.')
    let l:bufname = bufname('%')
    enew
    exec 'bw '. l:bufname
    exec "e" . fname
    call setpos('.', pos)
endfunction

これでシンボリックに煩わされる日々も無くなりました!