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

ChromeBook におけるテキスト入力環境の改善について

$
0
0

 はじめに

 私は、Asus FlipというChromeBookを普段使っています。
 幸いこのマシンは、ChromeOS, Andoroid, Linuxを同時に実行できますので、使えるアプリケーションの選択の幅は、かなりあると思います。
 しかし、それでもどうしても満足できないのが、ほかならぬテキスト入力の環境だと言えます。
 ChromeOS上のテキスト・エディターにもかなり使えるものはあるのですが、そのどれもがまともに日本語入力ができません。たとえば、私が気に入ってるCaretといのがありますが、これは日本語の入力はできるのですが、なんとIMEのオンオフの切り替えができないのです。ですから、ブラウザにでも戻ってIMEの切り替えをして、もう一度Caret画面に戻ります。
 ネット上で推奨されているエディターについては、どれも「冗談でしょう、こいつで文字を打つのか」と、思えるものばかりで、まあWindowsのメモ帳以下でしょう。
 では、Androidのエディターでも使おうかと思って試してみましたが、そもそもここにもいいエディターは皆無でした。
Jotaというのが人気があるようですが、やはり「こんな程度の代物しかないのか」、という感じです。これと比べるならば、WindowsのSakuraが、神に見えます。いや、MS-DOS時代のVZが懐かしく感じました。
では、Linuxはどうかというと、現在ではIntelチップ上ではものすごく優秀なエディターがいくつかあるのですが、悲しいかなArm7上では、そういうものは無いのです。
 結局、コンソール上でVimでも使うしかないか、というのが私の結論でした。

問題点

 ここで問題になるのが、以下の2点です。

  • ChromeOSのCrosh上で、そもそもどうやって日本語を入力できるようにするか。
  • ChromeOSのCroshウインドウ(ブラウザの1タブ)とChoromeOSのクリップボードの不完全なカットアンドペースト環境を、どうやって改善するか。

 前者については、実に乱暴な方法で解決してしまいました。
 前投稿「ChromeBook KaliLinux の奇妙な使い方」で書きましたが、ようするに、人間パッケージマネージャーになって、Kaliのバイナリーを手動でChromeOSにインストールしたのです。
 Locale環境の構築 → uim-fep, uim-mozcのインストールでなんとかしのいでしまいました。

 さて、後者ですが、そもそもどういう状況かというと、Crosh → ChromeOSクリップボードは、なんとか多言語でもOKなのですが(ただし、タッチパッドで選択貼付)、その逆については、ASCII文字以外はすべて化けしてしまうのです。
 これはかなり深刻で、だいぶ考えたのですが、長い間うまい解決方法が見つかりませんでした。

 ところが、とうとうその解決方法を見つけました。
 というか、解決した人がいたのです。そう、Croutonの作者による、Croutonクリップボードです。
 このCroutonクリップボードは、Croutonとは直接関係がありません。ChromeOSのクリップボードとコンソール環境を繋ぐXselのようなプログラムです。
 以下、これの導入方法について詳しく述べます。といのも、作者さんのインストール時の環境設定では、絶対まともに動かないからです。本人も「私自身は試していないが」などと述べています。はい、動きません。
 しかし、インストラーの環境設定がいいかげんなだけで、本体プログラムはすばらしいのです。
 これを丁寧に動くようにしましょう。そして、すこしばかり使いやすいように、改良しましょう。
 まあ、Vimの設定を変更するだけですが。

CroutonクリップボードのインストールとVimでの設定

 まず、インストールするところまでは、作者さんの指示どうりで問題ありません。
 作者さんのページに書いてあることを、以下に転記します。
 なお、前提として、ChromeOSにnode.jsがインストールされてなければなりません。

 まず、以下を実行して、ChromeOSクリップボード監視サーバーをインストールする。

curl -sL https://cdn.rawgit.com/zwhitchcox/crouton-clipboard/c7d055f2ea0a2c23f6874c623fff9d23f6f0b431/install.sh | sh

 このサーバーは、単独で機能するのではなく、Chrome拡張機能Crouton Clipoardと連携して機能する。
 ということでchrome Webstoreからこれをインストールする。

 つぎに、インストーラーが勝手に書き換えたファイルを修正する。
 まず、.bashrcにおけるサーバー自動起動をコメント化する。
 毎回bashを起動するたびに、サーバーを起動する必要はない。
 OSブートした後、一回だけ立ち上げればよい。手動で起動しましょう。

# node ~/.crouton-clipboard/server.js &

 つぎに、.vimrcに加えられた記述もコメント化する。

" nnoremap "*p :r !cat /home/chronos/user/.crouton-clipboard/data.txt<CR>
" vnoremap "*y :'<,'>w! /home/chronos/user/.crouton-clipboard/data.txt<CR>

 これは、動かない。
 Windows版と違ってLinux版では、*レジストはほとんどのVimで実装されていない。
 しかし、上記動作は上書きできないように設定されている場合が多い。
 敢えて書くと、

nnoremap "@@ :r !cat /home/chronos/user/.crouton-clipboard/data.txt<CR>
vnoremap "@@ :'<,'>w! /home/chronos/user/.crouton-clipboard/data.txt<CR>

 と、でもすれば動作する。
 しかしこれでは、期待する動作とはならない。
 これでは、カレント行の下に文字列が挿入され、vmodeにおける文字単位の選択領域は無視され、カレント行がクリップボードにコピーされてしまう。
 以下のようにすれば、一般的なエディターのカットアンドペーストの動作となる。

function FromClip()
   let f = readfile("/home/chronos/user/.crouton-clipboard/data.txt")
   let @0 = join(f,"\n")
   let @" = @0
endfunction
function ToClip()
   call writefile(split(@","\n"),"/home/chronos/user/.crouton-clipboard/data.txt")
endfunction
nnoremap <C-@> i<Esc>:call FromClip()<CR>p
vnoremap <C-@> <Esc>i<Esc>:call FromClip()<CR>p
inoremap <C-@> <Esc>:call FromClip()<CR>pi
vnoremap @! y:call ToClip()<CR>

 モードに関係なく、+@で、カーソル位置にクリップボードの内容がコピーされる。
 vmodeでは、@!で、選択領域がクリップボードにコピーされる。
 以上で、少なくともChromeとCroshとの間のカットアンドペーストは可能になる。

 もちろん、これでもまだ十分ではない。
 なぜなら、Chrome内で動作している場合に限って、Crouton Clipboardは機能するのであり、独立したアプリケーションからクリップボードにコピーされた内容は監視できない。
 逆に、Vimから貼り付けられた文字列は、独立したアプリケーションでも使える。

 以上、なかなか100%の解決とはいかないが、少なくともWebページのコピーをVimに貼付けられるので、実用上では大きな改善である。やっと、使う気にさせる最低限度の水準に達した、と思われる。

 もちろん、この程度の環境では、居心地が良いとはお世辞にも言えないだろう。
 プログラムやマークアップを全く書かないのなら、短いメモはGoogleKeep、長いものはGoogleDocumentを使うのが、素直かつ最善の選択であるように思う。まあ、そういう使い方を想定したOSですから。

 想定された使い方をしない者たちの労苦は、これからも果てしなく続く。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>