楽しいですよね、DroidVim。……いや正直ただのオモチャにしている感じなんですがまぁ、楽しんでいます。ただ、フルキーを駆使するのが前提のVimをタッチデバイスで扱うのは流石にストレスを感じることも多いんです…特に記号とか、特に記号とか!というわけで、少しでも改善できそうな方法を探して、何とかしてやろうというやつです。というよりまたスクリプトを増やしてしまいました。
OLLIE
最近DroidVimに少しだけ変更がありまして、IMEの処理にiminsert
が使えるようになりました。それに伴い、ファンクションバー1に<C-^>
をアサインすることが出来るようになり、マニュアルにはGboardの為のコンフィグの例まである感じで……これ自体はモード遷移での恩恵なんですが。
ノーマルモード中の<C-^>
はデフォルトで「代替ファイルの編集」がマップされており、ノーマルモード中のIME処理に影響はなく、またそもそもこのマップを知らなかったので、必要なときには:e #
を使っています。むしろモードに気が付かずにバッファが変わってしまうのに苛立ちを……まぁ誤爆して苛立つキーなら潰すまではともかく、より使いたい機能をマップしてしまえばいいわけですよ。例えば<C-^>[a-z]
でgboardの右肩の記号がロングタップなしで打てるとか。
スケボーキング
scriptencoding utf-8function gboard#map(IFSize) abort
nnoremap <C-^><C-^><C-^>forlin keys(g:longTap)
execute 'noremap <C-^>'.lg:longTap[l][a:IFSize]endforendfunctionfunction gboard#unmap() abort
try
nunmap <C-^><C-^>catch/E31/endtryforlin keys(g:longTap)try
execute 'unmap <C-^>'.lcatch/E31/
continue
endtryendforendfunctionfunction gboard#main(isBang,...) abort
ifa:isBang!=? '!'ifa:0>0&& a:1=~? '^\(large\|small\)$'ifa:1==? 'large'let IFSize =1elselet IFSize =0endifcall gboard#map(IFSize)ifv:vim_did_enter
echo printf('[gboard]: Mapped for %s display.', tolower(a:1))endifelse
echo '[gboard]: Maps from gboard.vim'
nmap <C-^>endifelsecall gboard#unmap()
echo '[gboard]: Unmapped.'endifendfunction
scriptencoding utf-8if!exists('g:longTap')letg:longTap={ \'q':['%','^'], \'w':['\', ','], \'e':['\|','\|'], \'r':['=','='], \'t':['[','['], \'y':[']',']'], \'u':['<','<'], \'i':['>','>'], \'o':['{','{'], \'p':['}','}'], \'a':['@','@'], \'s':['#','#'], \'d':['$','$'], \'f':['_','_'], \'g':['&','&'], \'h':['-','-'], \'j':['+','+'], \'k':['(','('], \'l':[')',')'], \'z':['*','\'], \'x':['"','%'], \'c':["'",'*'], \'v':[':','"'], \'b':[';',"'"], \'n':['!',':'], \'m':['?',';'], \'.':['/','/'] \}endif
command -nargs=? -bang Gboard call gboard#main('<bang>',<f-args>)
まぁ、アルファベット全部にnoremap
するわけで必然的にやぼったい設定が必要になります……仕方ないね。
METHOD
基本的にforループをブン回してnoremap
するだけなんですが、gboardの仕様が画面サイズによってロングタップの文字が変わるので、両方の設定に対応できるようにしています。正直「他は知らん」でも良かった気がするのですが、一応カスタム出来るようにしておきました。ちょっとした気の利かせ的に.
のロングタップで出せる、というより何故かロングタップしないと出せない/
を<C-^>.
で打てる気遣いをしているんですが、/
自体はDroidVimのファンクションバーにアサインできるので必要ないかもしれないです。一応<C-^>
のもとの機能は<C-^><C-^>
に振り直しています。
キーボードの近くに、ある程度カスタマイズできるオンスクリーンキーが……この説明やぼったいなぁ。Playストアからスクショ見てください。マニュアルで言うところの
◇
を活用したいという話をしています。 ↩