Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimでバッファ読込時にシンボリックリンクかどうかを判別する

$
0
0

アカウント取っといて使わないのもなんだし書いてみる。

目的

Agitやfugitiveなどを利用する際、シンボリックリンクとそうでないファイルの違いを意識せずに扱いたい。
元ファイルのパスを取得する方法は以下に書いてあった(パスを再設定するコマンドを定義している)。
Vimでシンボリックを辿る - たけっぱ横丁
だがぶっちゃけ面倒なのでバッファを開いた時にcd再設定してくれるautocmdを書いた。

スクリプト

.vimrc
au BufEnter * execute findfile(expand('%')) != "" && resolve(expand('%:p')) != getcwd().'/'.expand('%') ? ":FollowSymlink"  : ""

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

真面目にスクリプトを書いたの初めてなんでおかしな所があるかもしれない。
あとどのバッファを読んでもこのautocmd走るからレスポンスがどうのはあるかもなので気になったらまた改良しようと思う。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>