経済学修士残酷物語

東京の経済学修士のブログ。自分の専攻や統計学から最近読んだ本や雑記まで

vimでRの開発環境を整えたい

いやRstudio使えば良くない?

背景

  • できるだけvim/ターミナル上で完結して操作がしたい
    • RAやバイトではpythonを使い、他にもhtml, javascript, rustをしばしば扱う
    • 言語ごとにエディターを使い分けるのが面倒だしクールだとも思えない
    • vscodeはRの機能が貧弱っぽい

環境

入れたもの

  • Nvim-R: R用プラグイン。バッファでRを立ち上げてコードを実行できるので簡易Rstudioが作れる

    • R_assignなどを設定することでRstudioよりも設定を最適化できる(と思う)
    • bufferの画面が小さくて気になる場合ははtmuxを使って別のsessionでコンソール開くこともできる。ディスプレイがないとちょっと不便
    • Rhelpですぐ関数のdocumentが見れるのも嬉しい
  • lintr: Rのlinterパッケージ。下のALEと組み合わせて使う

    • 個人的にはRmdからpdfファイルを作るときに重宝する。最長文字数制限がないと簡単にコードがはみ出てしまうという問題がある
  • ALE: 非同期型のlinterプラグイン。syntasticでも良いと思うが、新しいもの好きなのでこちらを採用している。

今のところ結構快適。スペースで行単位の実行ができたり、パラグラフ単位や選択範囲での実行など色々調整できるのが良い。

dein-lazy.tomlにはこんな感じで設定している:

[[plugins]]
repo = 'jalvesaq/Nvim-r'
hook_add = '''
  let g:R_assign = 3 " _ を<-に変換
  let g:R_in_buffer = 0 " tmuxのセッションにコンソールを開く
  let g:R_insert_mode_cmds = 1
  let g:r_indent_align_args = 0
  let g:R_parenblock = 0
  " スペースで行・選択範囲を実行
  vmap <Space> <Plug>RDSendSelection
  nmap <Space> <Plug>RDSendLine
'''
on_ft = ['R', 'r', 'rmd']

今後やりたいこと

  • deoplete周りとの補完の共存。まあ現状そこまで優先度合いが高そうでもない