youは何しにDroidVimへ？ - androidユーザー向けDroidVimとの付き合い方

# 俺とお前とDroidVim

まず、この記事は僕が備忘録として書いていたandroidアプリ[DroidVim](https://play.google.com/store/apps/details?id=com.droidvim)の[記事](https://qiita.com/astrorobot110/items/d76e7358cc35929e90ba)に関して、数件ながら言及があったのでちょっと更新しておこうというものです。具体的にはandroidのバージョンアップに伴い、当時のDroidVimとは少し設定の追い込み方が変わってきてしまったので、それを受けて「今DroidVimをどうしているか」ということを書き連ねておきます。で、今はどう使っているかというと……実はメモアプリ自体を[notion](https://www.notion.so)に乗り換えてしまっています。これは僕の仕事の内容が変わってしまい、取ったメモに対してその場で素早く計算をする必要がなくなる、もしくは計算が必要な時点でラップトップではExcelを開いているケースが増えたので必然的にvimでメモをして、ワンコマンドでvimに計算をさせたいというケースがなくなったことによるものです。つまりandroidでインタプリタ的に振舞うなにかが欲しかったところにDroidVimがあったので使っていたわけです。また、「ポメラ的にandroidタブレットとvimを使いたい」という話はタブレットがLenovo Tabに変わったりしましたがそれはそれで動いています。一方で前述の通りラップトップを持って動き回るケースも増えたので、文字打ちをタブレット+vimでやるケースも減りました。ここでもnotionの利便性がちょっと上回ったりしています。

まぁ**それはさておき、出来れば無限に触っていたいですよね、vim。**
というわけで先に進みます。

# 俺はvimrc！お前何rc？

まず、記事執筆時と大幅に変わったのはandroidの仕様変更で、セキュリティ上の理由からandroidの内部ストレージに直接アクセスできなくなったことです。ということは、お手持ちのvimrcをDroidVimに持ち込むためには追加機能であるgit, curlを追加して(有料/買い切り)git経由で同期するか、何らかの愚直な方法でvimrcをDroidVimのサンドボックス内に持ち込むかどちらかになりますが、まぁgit使いましょうよ。多分内部ストレージから頑張ってファイル持ち込むのは可能ですけど、[fugitive](https://github.com/tpope/vim-fugitive)みたいなgit周りのフロントエンドも動くんでその方がいいですよ。

で、vimrcを持ち込む以上プラグイン管理の話にもなるんですけど、すいませんこれに関しては「[vim-plug](https://github.com/junegunn/vim-plug)なら動いてるやで」としか言えないので、どうすればいいのかうまく解説できないです。とりあえず「vim-plugを追加すれば足がかりに出来る」のであれば定番っぽいテクニックですがこれが出来ます。

```vim:vimrc
if empty(glob(expand($HOME..'/.vim/autoload/plug.vim')))
	cd $HOME/.vim
	silent !curl -flo autoload/plug.vim --create-dirs
		\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
	source $HOME/.vim/autoload/plug.vim
endif
```

で、実際はというとデバイス間で共通のvimrcを使っていると、デバイスによって読み込むプラグインを選択したいケースが出てくるわけです。DroidVimに限らない話ですが、僕の場合こんな感じで振り分けのベースになるグローバル変数を作って対処しています。

```vim:vimrc
" シェルの確認

let g:isDroid = expand('~') =~? 'droidvim'
let g:isTermux = expand('~') =~? 'termux'
let g:isWin = has('win32') || has('win64')
let g:isUnix = has('unix') && !( g:isDroid || g:isTermux )

" デバイスの確認

if g:isWin
	let g:device = tolower($COMPUTERNAME)
elseif g:isUnix
	let g:device = tolower(system('echo $(hostname)')) ->trim()
elseif g:isDroid || g:isTermux
	let g:device = tolower(system('getprop ro.product.model'))
endif
```

`getprop`はandroid端末側のコマンドです。機種によって型番で出てきたり機種名で出てきたりと様々ですが、デバイスを特定するための文字列を受け取るには十分です。あとはvimスクリプト内で条件分岐していけば固有の設定も簡単に振り分けられると思います。なお、前回の解説記事のときに使っている`.vim/plugin`内のスクリプトの管理なんですが、そういうケースに対して`:packadd`を使う方法に切り替えてしまいました。実際はデバイスごとに自分で書いた設定/スクリプトを選択したいケース自体も減っているので、スクリプトそのものの中で選択しています。

さて、もう一つ当時と大きく変わったIMEの操作に関してなのですが、記事書いた当時同様に[公式のドキュメント](https://droidterm-e8a40.firebaseapp.com/droidvim/ja-JP/#t7)の方法が一番やりやすそうです。実際は前回記事の時点のIME周りの仕様も、自分がどうしていたかも覚えていなくて……というわけで解説が出来ないんです。ただ、公式ドキュメントも[Gboard](https://play.google.com/store/apps/details?id=com.google.android.inputmethod.latin)を前提にして書いている節があるので、長く[ATOK](https://play.google.com/store/apps/details?id=com.justsystems.atokmobile.service&hl=ja)ユーザーなので移行できない、とかになると込み入った設定が必要になるかもしれません。なお、個人的にGboardに不満を感じる出来事もあって色々試したのですが、現状のDroidVimではよほどじゃない限りはGboardに決め打ちするのが一番楽なんじゃないでしょうか？本音は「[swiftKey](https://play.google.com/store/apps/details?id=com.touchtype.swiftkey&hl=ja)に移行したいな」なんですけど、DroidVimが上手く対応できてないみたいです。

# 〆

冒頭に書いているのですが、とにかくDroidVimの稼働率が当時より格段に下がっているので、あまり突っ込んだアレコレでDroidVimがより快適になるみたいな記事が書けないんです。これも冒頭の通りで、vimをインタプリタ的に振舞わせようというのが目的で、またvimとよく連動するメモアプリが見つからないから「じゃあ全部vimにする」というのが当時の方針でした。で、notion移行した今から見て「じゃあどういうことをするならDroidVimに利点があるの？」ということなんですが……当時のvimrcには三角関数を追加するスクリプトと、現在行が決まった様式ならそれを式として計算させるスクリプトが入っていました。そういう出先でメモしながらどんどん計算も必要な場合は今でもDroidVimでメモを取る価値が十分にあると思います。

……もちろん自分でスクリプトを書くことが前提なんですけど。
Happy vimming!