Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Androidでもvimを使いたい - DroidVimの設定あれこれ

$
0
0

ポメラ!お前はポメラになるのだ!

「ポメラほしい。でもUSキーじゃないしじゃあUSキーのネットブックほしい。ぶっちゃけCUIでいい。いっそポメラの代替品ならVimだけ動けばいい。」みたいなことを最近言っていたんですが、少し冷静になりまして、状態もよくわからん中古のネットブック買って、バッテリーがうんちゃらとか変態レイアウトがうんちゃらとか言うくらいだったら、root取れる中華タブとキーボード買うほうがマシよねって気がついたんです。ホラちょうどここにカスタマイズしようとして放っておいたFire7もあるんですよ。ここはちょっと一念発起して、昔チェックだけはして「スマホじゃ無理だな」…と放っておいたDroidVimと、bluetoothキーボードの組み合わせで持ち歩けるVimを作ってしまおうという魂胆なんです。

「俺の答えはこれや」と叫びvimrcを投げつける

新しい端末でvimを使うならまず使い込んだ自分のvimrcを放り込むところから始まるんですが、幸いDroidVimは課金すればbusybox、gitが使えるのでさっさと課金して自分のvimrcをpullします。公式のドキュメントでは「どっか.vimrcをうまいこと置いてシンボリックリンクで」とのことですが、もちろん.vimディレクトリまるごとシンボリックリンクでも問題なかったです。.vimの実ファイル群置く場所は、まぁAndroidだし/storage/emulate/0/下でいいんじゃないですかね?ここならDroidVimの環境変数$INTERNAL_STORAGEに入っているので何かのっぴきならないことがあってもそんなに困らないでしょう。

もちろん外部ツールに依存しない前提ですが、殆どのvimscriptは問題なく動きました。プラグインマネージャのvim-plugも問題無しでした。環境に依存するものもあるのでvimrcにちょっとした仕掛けをしておくほうが良さそうなので変数を仕掛けておきます。

vimrc
letg:isDroid= split(&runtimepath,',')[0]=~? 'droidvim' ? v:true :v:false

変数をbool値としてしか使うつもりがないのでv:trueを使っていますが、そのへんはどうすればいいのか分かっていません。さておき、DroidVimで弾きたい設定がある場合はこれを使って行きます…弾きたいのは…

~/.vim/plugin/**/*.vim

今まで自分で書いたスクリプトはとりあえずpluginに放り込んでおけばガンガン読んでくれるので安心していたんですけど、ここに放り込むとファイル単位でスクリプトを弾くのがとても面倒なので工夫せざるを得なくなりました。netrwを使っている手前、ディレクトリ構造で処理しようとするとディレクトリに潜る手順が増えるのが煩わしいし、そもそもpluginディレクトリ配下にある*.vimは何でも読む以上ディレクトリツリーも使えません。しょうがない、オミットするためのスクリプトを書いて乗り切りました。

plugLoader.vim
scriptencoding utf-8letg:excludePlugin={}letg:excludePlugin.droid =[]" ここDroidVimで弾くスクリプトのファイル名 (以下同様)letg:excludePlugin.win=[]letg:excludePlugin.unix =[]" プラグインの読み込みletg:myPlug= glob($VIMFILES.'/myplug/*.vim',0,1)let currentTerm =''ifg:isDroid==1let currentTerm ='droid'elseif has('win32')let currentTerm ='win'elseif has('unix')let currentTerm ='unix'endiffor pick ing:excludePlugin[currentTerm]let rgx = pick.'$'callfilter(g:myPlug,'v:val !~# rgx')endforforscripting:myPlug
    execute('source '.script)endfor

スクリプト中の$VIMFILESの中身は先のg:isDroidでも使っていたsplit(&runtimepath, ',')[0]です。

I・M・E! I・M・E!

日本語入力がある限り日本人のvimmerは永遠にIMEの設定をする運命なのですが、当然のごとくAndroid+H/Wキーボードの環境でも襲ってきますというか、PCベースの環境より更に悪化していると言って差し支えないでしょう。とりあえず「Google日本語入力」を使っているので色々と試しましたが、公式ドキュメントに倣うのが一番無難でそれ以上快適にはならなさそうでした。但し、g:imcontrol_insertを設定すると入力モードが半角の「単語ベース」の入力になる上、そもそもGoogle日本語入力経由の入力がかなりガタつくのでちょっと使い物にならないなという感じです。日本語入力のために2ストローク使うのはシャクですが「IMEショートカット→入力切替」の手順を踏むのがいいのかなと思います。それとも:TFAModで仕込んだり出来るんですかねこれ…

余談

そもそもFire7でDroidVimを使うにあたって、そんじょそこらのH/Wキーボードを買うとCAPS⇔ctrlのスワップが出来なくて1ちっとも快適になりません。実際買ったのはそんじょそこらのやつなので、なんとかせんとならんのですが…Fire7君は立派に戦って文鎮となりました。現環境は中古で買ったQua tabです。Google Playがマトモに入っているならroot取らなくてもH/Wキーボードのレイアウトが変更できるのでまぁ及第点です。IMEでクッソガクガクするのはもしかしたら単純にQua Tabのパワー不足が原因かもしれないですが…


  1. それが必要じゃない人生であれば幸せなんですがまぁ、無理っすね20年前にはもう入れ替えてたし…ある程度のクラスのキーボードはハードウェアでスワップできるようになっててほしいんですけどね。今使ってるLenovoくんも入れ替えはOS側に頼ってるし… 


Viewing all articles
Browse latest Browse all 5608

Trending Articles