日々の記録簿

日々のできごとの記録

日記

Nvim-Rの導入方法(その2)

投稿日:2017-01-13 更新日:

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による補完が効かなくなった。以前の設定に戻したら動いた。

スポンサーリンク

スポンサーリンク

-日記

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

i3wm + xfce にしてみた!

興味がありつつも敷居が高そうで試してなかったタイル型ウィンドウマネジャーを試してみました。xmonadにいったん挫折したあと、i3wm + Xfce 4を試してみたら、イイ感じだったので、導入方法の記 …

kernel 4.2でPT3を使う

kernel 4.2にアップグレードした際に、pt3のlinuxドライバのビルドに失敗しました。 とりあえずkernelをダウングレードして凌いでいたのですが、対処方が記載されたサイトがあったので、情 …

大規模調査の分析でSPSSの「ケースの重み付け」を使う場合の留意点

前回SPSSの「ケースの重み付け」を調べて満足していたのだが、Rのコードを見ていてとんでもないことに気づいた。 weighted.se <- function(x, w, na.rm = FAL …

kernel 4.0.1-1で、Vmware Playerが起動しない

Arch Linuxでカーネルを4.0.1-1にアップデートしたら、Vmware Playerが起動しませんでした。 エラーを見ると、 GCC GNU C Compiler (gcc) version …

ICU 59.1にしたらintsvyが動かない

状況 ICUを59.1にアップデートしたらintsvyが動かなくなった。他にもいくつかRのlibraryが動いていない気がする。ちなみに環境はArch Linux。 対策 AURからicu58をインス …