日々の記録簿

日々のできごとの記録

日記

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

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

関連記事

サイトをSSLへ移行してみた!

今、話題のLet’s Encryptを利用して、このサイトをSSLに移行してみました。 参考にしたのは、次のページです。 Arch Wiki Let’s Encrypt さくらのレンタルサ …

RによるPISAの分析(データの準備:続報)

三重大の奥村晴彦氏のホームページにて、RでPISAデータを読み込む方法(PISAデータを読む)が公開されていました。 こちらは、Rubyで読み込んでいるようです(ちなみに私はRubyはサッパリです・・ …

surveyでR2値を計算する方法

Rのsurvey packageには通常の回帰分析におけるR2値を計算する関数が存在しないようである。なので計算方法。参考にしたのはこちらのサイト。コードを見るとわかるが、途中でヌルモデルを計算してる …

Nexus 9にCyanogenmod 12.1をインストールした!

遅ればせながら、Nexus 9にAndroid 5.1.1ベースのCyanogenmod 12.1がやってきたのでインストールしました。 Cyanogenmod のNexus 9のページからzipをダ …

VLC3.0.4-3でTSファイルが再生できない【解決】

タイトルの通りですが、いつの間にかVLC(3.0.4-3)でTSファイルが再生できなくなっていました。OSはArch Linuxです。依存関係でダウングレードもできない模様。 ググってみると、【Mpe …