日々の記録簿

日々のできごとの記録

日記

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

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

関連記事

Nexus 6とNexus 9 lteにCyanogenmodをインストールした(その後)

Nexus 9 LTEとNexus 6にCyanogenmodをインストールしてしばらく立ったので、現状報告(2015/04/09現在)。 まず、Nexus 6の方は、日常的に使えるレベルに達している …

Thinkpad X1 Carbon 2016 (4th gen)に、Arch Linuxをインストールする方法(その3)

Thinkpad X1 Carbon 2016 (4th gen)でLinuxが起動しないという問題の現状です。 最新のkernel 4.6rc3を試したところ、OneLink+ ドックを繋いだままで …

XfburnでDVDドライブが認識されない!

XfburnでDVDを焼こうと思ったら、DVDドライブが認識されていないというエラーに遭遇したので、その対処法です。 症状は、「DVDドライブは接続済みにもかかわらず、メッセージがでて、ドライブが認識 …

ThinkPad X250 のトラックポイントが使いにくい!

X250を1ヶ月ほど使っていますが、最近いまいち旧機種に比べて使いにくいと思うようになりました。 で、気づいたのが、X250はトラックポイントの反応が鈍いということ。旧機種に比べて、操作に力が要ります …

さくらVPSのVNCコンソールの挙動が変(Vimiumが原因)

タイトルで言いたいことは終わっているのですが、chromeプラグインのVimiumを有効化していると、さくらVPSのVNCコンソール(html5)がうまく動きません。vimiumを無効化すると、普通に …