Vimで画面分割して指定行に移動する

最近ちょこちょことvimrc読書会に参加してます。

オンライン上で生贄テーマになっているvimrcを読み、気になるところを自由に
発言するというスタイルなのですが、人によって読む速度はバラバラです。

なので自分が読んでいる場所とは全然違う場所が話題になっていることがあります。

そういった時は、

  1. 画面分割する
  2. 該当行にジャンプする

という2ステップを踏んでいたのですが、こんな設定で1ステップ化してみました。

" Usage:
" [count]sag
" [count]sav
nnoremap sag :SplitAndGo split<CR>
nnoremap sav :SplitAndGo vsplit<CR>

command! -count=1 -nargs=1 -complete=customlist,SAG_Complete SplitAndGo call SplitAndGo(<q-args>)

function! SplitAndGo(cmd)
  let cnt = v:count ? v:count : 1
  let cmd = cnt > line('.') ? 'botright '.a:cmd  : 'topleft '.a:cmd

  execute cmd
  execute cnt . 'G'
endfunction

function! SAG_Complete(ArgLead, CmdLine, CursorPos)
  return ['split', 'vsplit']
endfunction


昨日の途中に思いついたものの時間内に完成しなかったので
次回試してみようと思います。