vimからRを使う場合、Nvim-Rが便利です。
以前にも紹介しましたが、設定をいくつか間違えていたので修正版です。
インストール
まず、neovimをインストールする。このとき、deopleteを使うなら、python-neovimを入れるといい。依存関係でneovimもインストールされる。また、クリップボードを使うためにはxselも必要。
sudo pacman -S python-neovim xsel
続いてNvim-Rの導入。自分は、vim-plugを使っている。
補完のためにdeoplete、構文チェックのためにneomakeを入れる。
init.vimは以下。
call plug#begin('~/.config/nvim/plugged') Plug 'jalvesaq/Nvim-R' Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } Plug 'neomake/neomake' call plug#end()
設定
細かい使い方は、helpを見たほうがいい[:h Nvim-R]が、関連する箇所の自分のinit.vimは以下。以前のものは、deopleteの設定に問題があった。またnvim-rは、insert modeでもRにコマンドを送れるように設定した。
let g:maplocalleader = "," " deoplete " Use deoplete. let g:deoplete#enable_at_startup = 1 " Use smartcase. let g:deoplete#enable_smart_case = 1 " for Nvim-R let g:deoplete#omni#input_patterns = {} let g:deoplete#omni#input_patterns.r = \ '\w+|[^. \t]->\w*|\w+::\w*' " nvim-r let g:R_vsplit = 1 let g:R_assign = 0 let g:R_nvimpager = "horizontal" let g:R_objbr_place = "console,right" let g:R_objbr_opendf = 0 let g:R_insert_mode_cmds = 1 " neomake autocmd! BufWritePost * Neomake let g:neomake_r_enabled_makers = ['lintr']
なお、neomakeは現在(2017年1月)のところ、lintrに対応していない。
ありがたいことに、すでにコードを書いてくれた人がいるので、githubからr.vimをダウンロードさせてもらう。
あとはr.vimをneomake/autoload/neomake/makers/ft/に配置すればよい(他によい方法があるような気もするが・・・)。
基本的な使い方
[,rf]でRが起動し、[,ro]でオブジェクトブラウザが起動する。
Rの終了は[,rq]で、現在の行を実行するのが[,l]となる。Visual Blockで囲んで[,l]すれば、その範囲がRに送られる。
[,rs]でカーソル上のsummaryを見たり、[,rp]でprintしたり、[,rh]でhelpを見たりできる。
Rのlm関数のhelpが見たければ[:Rhelp lm]、実行中のRを停止するには[:RStop]。
保存するたびに、lintrによる構文チェックが実行される。
vim + tmuxで使う場合
基本的には、vim-r-pluginと同じ要領で使える。ただし、tmuxへコマンドを送るために、.vimrcに以下の追記が必要。
" tmux config let R_in_buffer = 0 let R_applescript = 0 let R_tmux_split = 1
また、”+clientserver”に対応したvimを使うために、わざわざvimを再コンパイルする必要はなく、gvimをインストールすればよかった。
現時点では、vimとneovimのどちらがよいかと聞かれると、neovimだと思う。vimの場合、tmuxの設定・インストールの手間がかかる。また、tmuxを経由しているため、R側の操作がどうしても面倒になる(tmuxを扱い慣れていれば違うのかもしれないが)。
※2017/01/18追記
setwidthと.Rprofileに関する記述を削除。
※2017/05/03追記
nvim-Rか、deopleteかいずれかのアップデートが原因だと思うが、deopleteによる補完が効かなくなった。以前の設定に戻したら動いた。