vimからRを使う、vim-r-pluginの紹介。
まあ、vimにこだわりがないなら、RStudio使ったほうが幸せになれると思います。
環境は、Arch Linuxです。
インストール
vim-r-pluginを使用するには、いくつか条件がある。
まず、vimがコマンドサーバとして動作可能であること。これは、[:version]で、”+clientserver”になっていればOK。
ただ、Arch Linuxの場合、デフォルトでは+になっていないため、PKGBUILDを書き換えて、自分でコンパイルする必要がある。
ソースの取得は、yaourtを使うのが簡単。
yaourt -G vim cd vim vi PKGBUILD
“disable-gui”の部分を書き換え。
# --disable-gui \ --enable-gui=auto \
あとは、makepkgして、インストール。
makepkg -s sudo pacman -U vim**** vim-runtime****
次に、tmuxがインストールされていること。
sudo pacman -S tmux
tmuxの設定例については、ここを見るといいと思う。
これに加えて、Rで、vimcom, colorout, setwidthなどのpackageをインストールしておく必要がある。インストール方法は、それぞれリンク先を参照。
.Rprofileに以下を追記。
if(interactive()){ library(colorout) library(setwidth) library(vimcom) }
ここまで済んで、ようやくvim-r-plugin自体のインストール。
自分は、vim-plugを使っている。.vimrcは以下。補完に使うので、neocompleteも入れる。
call plug#begin('~/.vim/plugged') Plug 'vim-scripts/Vim-R-plugin' Plug 'Shougo/neocomplete' call plug#end()
設定
細かい使い方は、helpを見たほうがいい[:h vim-r-plugin]が、関連する箇所の自分の.vimrcは以下(さっきの続き)。
let maplocalleader = "," " NeoComplete " Use neocomplete. let g:neocomplete#enable_at_startup = 1 " Use smartcase. let g:neocomplete#enable_smart_case = 1 " Set minimum syntax keyword length. let g:neocomplete#sources#syntax#min_keyword_length = 3 let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' " R (plugin: vim-R-plugin) if !exists('g:neocomplete#sources#omni#input_patterns') let g:neocomplete#sources#omni#input_patterns = {} endif if !exists('g:neocomplete#sources#omni#functons') let g:neocomplete#sources#omni#functions= {} endif let g:neocomplete#sources#omni#input_patterns.r = '[[:alnum:].\\]\+' let g:neocomplete#sources#omni#functions.r = 'rcomplete#CompleteR' " vim-r-plugin let vimrplugin_vsplit = 1 let vimrplugin_assign = 0 let vimrplugin_vimpager = "horizontal" let vimrplugin_objbr_place = "console,right" let vimrplugin_objbr_opendf = 0
さらに.bashrcに
function tvim(){ tmux new-session "vim --servername VIM $@" ; }
と書いておけば、
tvim example.R
とすることで、tmuxとvimが連携した状態で開始できる。
基本的な使い方
[,rf]でRが起動し、[,ro]でオブジェクトブラウザが起動する。
Rの終了は[,rq]で、現在の行を実行するのが[,l]となる。Visual Blockで囲んで[,l]すれば、その範囲がRに送られる。
[,rs]でカーソル上のsummaryを見たり、[,rp]でprintしたりできる。
Rのlm関数のhelpが見たければ[:Rhelp lm]、実行中のRを停止するには[:RStop]。
関数やデータフレームの変数名はneocompleteが補完するが、引数の方が補完されないので[Ctrl-X Ctrl-A]で補完する必要がある。
なお、tmuxのプレフィックスキーを[Ctrl-A]に割り当ててしまうと、引数補完が[Ctrl-X Ctrl-A Ctrl-A]になってしまう。
これはめんどくさいので、tmuxのプレフィックスキーは[Ctrl-Space]にしている。
最後に、vim本の紹介。基本文献だと思うけど、初心者には勉強になった。
役に立ちました。ありがとうございます。