■ DroidVim (テキストエディタ)

DroidVimはテキストエディタVimのAndroid移植版です。
Vim (Huge version)、grep、diff、ctagsはすぐに使用できます。
https://play.google.com/store/apps/details?id=com.droidvim

■ ノート:

終了方法

  • ":qa"コマンド
  • "ダブルタップ"→"終了"
  • "📲"ボタン

Vimチュートリアル

  • ":Vimtutor"コマンド
  • "長押しメニュー"→"Vimチュートリアル"
または
はじめてのvi

直接入力/日本語入力

「🔤ボタン」で日本語入力へ切り替え。

日本語入力モード

■ トラブルシューティング:


フリーズ

Vimがフリーズした場合は、メニューの「ウィンドウを閉じる」をタップして終了します。

DroidVimがバックグラウンドで勝手に終了する。

一部の端末では省電力機構が正しく実装されていないので、バックグラウンドで動作しているDroidVimが勝手に終了させられることがあります。
その場合はDroidVimの「バッテリー最適化」をオフにしてみてください。(「設定」→「アプリ設定」→「バッテリーの最適化を無効化」)

長い行で表示が遅くなる

Vimは長い行があると表示が遅くなります。
ただしhtmlやjsonのように括弧が多い場合は、それほど長い行でなくてもmatchparenが原因で表示が遅くなることがあります。
その場合は以下のどちらかを.vimrcに追加してみてください。
" `matchparen_timeout`を小さくする(デフォルトは300). let g:matchparen_timeout=10
または
" 注意: updatetimeはグローバルです. (`:h updatetime`) set updatetime=300 aug matchparenlight   auCursorMoved * let g:matchparen_timeout=1   auCursorHold  * let g:matchparen_timeout=300|doau matchparen CursorMoved aug END

画面が乱れる

画面が乱れる場合は"等幅フォント(固定フォント)"を使用してみてください。
Vim(と端末エミュレータ)は等幅フォントしか扱えません。
等幅フォントは全ての文字幅が同じか倍サイズのフォントです。たとえば'i'と'w'も文字の横幅が同じサイズで表示されます。
変更は「設定 → フォント」から行えます。

有名なフォントとしてはVLゴシックなどがあります。
https://github.com/daisukesuzuki/VLGothic


ambiwidth

Vimのambiwidthオプションを変更する場合は、「設定」の「東アジアの曖昧な文字幅」も変更してください。

Git/Pythonがshellから実行できない場合

  • Git/Pythonを再インストール(上書き)
  • prootの有効化 (設定 > shell > proot)

■ ストレージアクセス:

VimはAndroidのshellを経由してAndroidファイルシステムに直接アクセスします。
したがって、Vimでファイルを編集するには、Androidのファイルシステムとセキュリティを理解する必要があります。

内部ストレージ
Androidデバイスに内蔵されているストレージ。
    Android 10以前ではshellから直接アクセス可能です。
    Android 11以降ではshellは特定のディレクトリ([Internal storage]/Android/data/com.droidvim/files)以外へ直接アクセスできなくなりました。
    「$INTERNAL_STORAGE」も参照してください。
アプリ固有ストレージ
アプリ専用のファイルを保存するストレージ。
   Androidアプリはサンドボックス内で実行されます。 そしてサンドボックス内のファイルは他のアプリからはアクセスできません。
   この領域は、一般的なLinuxファイルシステムとほぼ同じように扱えます。 DroidVimのホームディレクトリはこの領域にあります。
   Android 7以降ではドロワーメニューの「ファイル管理」ボタンを使用して、DroidVimのホームディレクトリへファイルをコピーすることができます。
外部ストレージ
外部SDカード、USBメモリ、さまざまなクラウドストレージ。
   Shellは直接アクセスできません。
  • Shellから直接アクセスできないストレージの新規ファイル作成/編集は「ストレージ」ボタンを使用してください。
  • DroidVimは直接アクセスできないファイルに対してキャッシュファイルを作成してそのキャッシュファイルを編集します。

$INTERNAL_STORAGE (内部ストレージ)

Shellからは$INTERNAL_STORAGEを使用して内部ストレージへアクセスできます。
また、$APPEXTFILESを使用して、[内部ストレージ]/Android/data/com.droidvim/filesにアクセスすることができます。
Android 11以降: $INTERNAL_STORAGE$APPEXTFILESは同じ場所になります。
:e $INTERNAL_STORAGE
* ホームディレクトリにシンボリックリンクが存在します。([ホームディレクトリ]/internalStorage)
  「ドロワーメニュー→ストレージ→シンボリックリンク」で再作成可能です。

echoコマンドでパスを表示できます。
:echo $INTERNAL_STORAGE
内部ストレージ($INTERNAL_STORAGE)は他のアプリケーションからもアクセスすることができます。

Android 11以降
    !!! 重要 !!!

   DroidVimをアンインストールすると$INTERNAL_STORAGE[内部ストレージ]/Android/data/com.droidvim/files)は削除されます。
   $INTERNAL_STORAGE内のファイルは定期的なバックアップを行ってください。
Android 11以降 (MANAGE_EXTERNAL_STORAGE権限が有効)
   GitHubのDroidVimはMANAGE_EXTERNAL_STORAGE権限をサポートしています。
   この場合は「Android 10以前」のように、内部ストレージへ直接アクセスが可能になります。
Android 10以前
   多くのデバイスでは/sdcard/storage/emulated/0として内部ストレージへアクセス可能です。
   Android 6以降はストレージの権限が必要です。

■ Vimfilesとホームディレクトリ

ストレージアクセス」をまず参照してください。

Vimの設定ファイル(.vimrc, .vim)は$HOMEへ作成してください。
.vimrcは「長押しメニュー→.vimrcを編集」でも編集することができます。
.vimrc         設定ファイル                   :h vimrc                
.vim/autoload 自動的に読み込まれるスクリプト :h autoload-functions    
.vim/colors   色テーマ定義ファイル           :h colorscheme          
.vim/doc       ヘルプドキュメント             :h write-local-help      
.vim/ftplugin ファイルタイププラグイン       :h write-filetype-plugin
.vim/pack     パッケージ                     :h packadd              
.vim/plugin   プラグインスクリプト           :h write-plugin          
.vim/syntax   文法ファイル                   :h mysyntaxfile          

Vimからshellコマンドを使用してディレクトリの作成とファイルのコピーが行なえます。
  1. :!mkdir -p $HOME/.vim/colors
  2. :!cp /path/to/your_colorscheme.vim $HOME/.vim/colors

それとは別にDroidVimのホームディレクトリにファイルをコピーする、より簡単な方法がいくつか用意されています。

!!! 注意 !!!
  • DroidVimをアンインストールすると$HOMEのファイルが全て削除されます。
  • (Android 11以降) DroidVimをアンインストールすると$INTERNAL_STORAGE ([Internal storage]/Android/data/com.droidvim/files)のファイルが全て削除されます。
定期的なバックアップをおすすめします。

ファイルマネージャー

 「Android 7以降」
ファイルのコピーにはドロワーメニューの「ファイル管理」ボタンを使用してください。
Android Storage Access Frameworkに対応したファイルマネージャーアプリも使用可能です。

Vimfilesの場所

内部ストレージ内のVimfiles(.vimrc.vim)を使用することができます。
$INTERNAL_STORAGE

$VIM

環境変数$VIMを設定してVimfilesのロケーションを変更できます。(:h $VIM)

「設定→シェル→初期コマンド」
export VIM=$INTERNAL_STORAGE/path/to/vimfiles bash -vim.app

シンボリックリンク

シンボリックリンクの作成方法は以下の通りです。
  1. :!rm $HOME/.vimrc
       ($HOME/.vimrcの削除)
  2. :!ln -s $INTERNAL_STORAGE/path/to/.vimrc $HOME/.vimrc
  3. :!rm -rf $HOME/.vim
       ($HOME/.vimの削除)
  4. :!ln -s $INTERNAL_STORAGE/path/to/.vim $HOME/.vim

ホームディレクトリのバックアップとリストア

内部ストレージまたはSDカード上のVimfiles(.vimrc, .vim)をホームディレクトリ($HOME)へコピーして使用することができます。
「ドロワーメニュー→ストレージ→バックアップ/リストア」

バックアップ/リストアは以下のように動作します。
  • タイムスタンプが新しいファイルのみバックアップ/リストアします。
  • シンボリックリンクはバックアップ/リストアされません。
  • ミラーリングは行いません。

■ Tips:

カーソル移動

  • 画面下半分で左右にスワイプして、カーソルを移動
  • [○]ボタンでカーソルボタンの上下と左右を入替え。
       [Ctrl]ボタンの状態に応じて上下と左右が一時的に入れ替わります([ESC]ボタンで終了)

一行テキスト入力

一行テキスト入力 (画面下部でダブルタップ)を起動すると、一般的なAndroidアプリと同等の通常入力が行なえます。
一行テキスト入力は「画面下部をダブルタップ」して起動可能です。
「設定」→「🔤ボタン」を「一行テキスト入力」に変更するのも便利です。

HTMLとLink

  • カーソル下のURLを開く
       - gx (:h gx)
  • 編集中のHTMLファイルをブラウザで開く
       - "メニュー" -> "共有" -> \"ファイル\"
       - Type :ShareIntent file

カラースキーム

DroidVimは256色端末用のカラースキームをサポートしています。
:colorscheme term256
好みのカラースキームファイルを"$HOME/.vim/colors"へコピーして使用することもできます。
Vimfiles

プラグイン

ホームディレクトリに.vimディレクトリを作成してVimScriptプラグインをインストールすることができます。
Vimfiles
以下のヘルプを参照してください。
  • :h plugin
  • :h runtimepath
packaddを使うこともできます。
  • :h packages

言語設定


Windows/samba

Windows/sambaで共有されているファイルを編集したい場合は、以下のアプリを使用してみてください。 (Android 8以降)

shell script

Android 10以降でホームディレクトリ内のシェルスクリプトを実行したい場合は、「設定→シェル→proot」を有効にしてください。

rootアクセス

DroidVimは端末エミュレータ上で動作しているので、suコマンドをインストールしている環境ではrootアクセスが可能です。
通常はroot化した際にviコマンドが使用可能になっているはずなので、shellまたはCtrl+zでシェルを起動してからのviの使用を推奨します。
  1. :shell or Ctrl-Z
  2. su
  3. vi
なおsuvimでDroidVimのvimバイナリを起動することも可能です。
  1. :shell または Ctrl-Z
  2. suvim
  3.  exitでrootを終了

Android 10以降

もしもsuコマンドでエラーが出る場合は":TerminalMode"をVim上で実行してください。
DroidVimをリスタートすると「端末エミュレータモード」で起動するので、suまたはsuvimを実行してください。
bashで問題が起きる場合は":TerminalMode sh"を使用してください。
DroidVimを終了すると次は「通常モード」で起動します。
[設定]→[シェル]→[proot]をオフにして使用することもできます。

■ 日本語入力モード:

日本語入力へはファンクションバーの"🔤"キーを使用して、「英数直接入力」/「通常入力」を切り替えてください。
なお一行テキスト入力ウィンドウを使用する場合は"🔤"キーによる切り替えは不要です。

その他にも以下の方法で通常入力(日本語入力)への切替が行えます。
  • iminsert (<C-^>)
  • Vimスクリプト
  • IMEショートカット (物理キーボード)

DroidVimはその性質上IME(日本語入力アプリ)のAPIを直接操作する必要があり、IMEの実装の違いが大きく影響します。
ほとんどのソフトキーボードはデフォルトで問題なく動作しますが、物理キーボードをGboard以外のIMEで使用して日本語入力を行いたい場合は適切な設定変更を必要とする場合があります。
まずはGboardを使用して動作確認してみてください。

iminsert <C-^>

Vimには日本語入力などのためにIMEをコントロールするiminsertオプションが用意されています。(:h iminsert)
以下の設定で"🔤"ボタンをiminsertを使用する英数/通常入力に変更してみてください。
  • DroidVimの「設定」→「ファンクションバーモード」→「"🔤"ボタン」→「<C-^>

以降は「挿入モード」で"🔤"ボタンを使用してから「英数/通常入力」を切り替えます。
この場合はiminsertの機能でノーマルモード/挿入モード移行時にIMEの状態が保存されて適切に切り替わります。
iminsert<C-^>または<C-6>でも入力を切り替えることができます。

IMEによっては以下の設定が必要かもしれません。
" `<C-^>`で英数/通常入力の切り替えと[Shift]+[Space]を自動実行 let g:imactivate_language_switch = 61

物理キーボード

「挿入モード」で<C-^>(<C-6>)を押すことでiminsertを利用して通常入力(日本語入力)に切り替えが行えます。
<C-^>はVimコマンドなので「挿入モード」の任意のキーにマップできます。
" 挿入モードでは<C-j>で入力切替 inoremap <C-j> <C-^>
[Alt]+[半/全]などの特殊キーで英数強制/通常入力切り替えを行いたい場合はIMEショートカットを利用してください。
Gboardなどで2つ以上の言語を使用している場合は、AndroidOS標準の入力切替ショートカット[Shift]+[Space]で入力を切り替えることができます。

IMEショートカット (物理キーボード)

IMEショートカットは物理キーボード用のショートカットキーを追加する機能です。
IMEショートカットを使用することでVimではなく端末エミュレータ側から入力モードの制御をおこなえます。
設定は「設定」→「テキスト入力モード」→「IMEショートカット」で設定可能です。

試しに→「IMEショートカット」のAlt+[半/全] | Alt + [`]を有効にしてみてください。
以降はAlt+[半/全]または Alt + [`]を、物理キーボードで入力するたびに「IMEショートカットアクション」で指定したコマンド(デフォルトでは「通常入力/起動時の入力モード」のトグル)が実行されます。
また「IMEショートカットアクション」を「<C-^>」にするとiminsertによるIME制御が行われます。

Gboard以外のIMEで物理キーボードを使用する。

物理キーボードはIMEによって動作がまちまちな上、動作保証を行っていないIMEも多くあります。
このためGboard以外のIMEで物理キーボードを使用する場合はIMEショートカットの設定を適切に変更する必要があります。

IMEで日本語を入力できる条件は以下のとおりです。
  • DroidVimの入力モードが「通常入力」である
  • IMEが有効になっている
使用しているIMEのモード切替とIMEショートカットによる「英数強制/通常入力」等を組み合わせて設定してください。

以下の設定により物理キーボード接続時のみ「通常入力」に設定することもできます。
  • 「テキスト入力モード」→「通常入力の強制」→ 有効
この設定を有効にすると入力状態はIMEにのみ依存するようになります。

DroidVimプラグイン

DroidVim専用の文字種変更プラグインが同梱されています。

" ノーマルモード移行時にIMEを英数入力へ変更 let g:imctrl_normal=53 " 挿入モード移行時にIMEを通常入力へ変更 let g:imctrl_insert=50
iminsertも使えます。
:set iminsert=2

オプション詳細

imctrl_insert               挿入モードへの移行時                  
imctrl_normal               挿入モードへの終了時                  
imactivate_insert           挿入モードへの移行時 (iminsert=2)    
imactivate_normal           挿入モードへの終了時 (iminsert=2)    
imactivate_language_switch 挿入モードへの移行/終了時 (iminsert=2)
「設定値詳細」を参照して適切に設定を行ってください。

Vimスクリプト

コマンドモードやVimスクリプトから文字入力モード等を変更することができます。
:call ATEMod(72) :ATEMod 72
「設定値詳細」を参照して適切に設定を行ってください。

設定値詳細

使用しているIMEによって同じ設定でも動作は異なります。
設定値効果備考
0  なにもしない
50 通常入力
51 直接入力 : パスワード 英数確定入力になる。
日本語入力不可。
52 直接入力 : URI       多くのIMEでは変更後に英数入力に切り替わる。
英数確定入力にはならない。(IMEの設定に依存)
日本語入力可能。
53 直接入力 : デフォルト
54 通常入力 : Raw      
55 「通常入力」/「起動時の入力モード」を切替
56 一行テキスト入力へ移動
61 言語切替 ([Shift]+[Space]) 「言語切替」が有効でないIMEに使用すると空白が入力されます。
62 言語切替 ([Alt]+[Space]) 「言語切替」が有効でないIMEに使用すると空白が入力されます。
63 <C-^> iminsert
70 IMEを隠す
71 IMEを表示
72 IMEをトグル

AndroidとIMEのショートカットキー

Androidのショートカットキーで言語、レイアウト、IMEを切り替えることができます。
レイアウト切替 [Ctrl]+[Space]   複数レイアウトを選択している場合
言語切替       [Shift]+[Space] IMEが複数言語を使用可能な場合    
IME切替         [Meta]+[Space]   複数のIMEを使用可能な場合
[Meta]は[Windows]キーまたは[Command]キー
(Android 7以降)

その他にも、多くのIMEでは日本語/英数の言語切替をショートカットキーで行えます。

日本語/英数入力切替
Gboard           [半/全]
[Shift]+[Space]            
Google日本語入力 [半/全]
[Alt]+[`]
[Ctrl]+[Shift]
ATOK             [半/全]
[Alt]+[Space]
[変換]    
Wnn keyboard lab [半/全]
[Shift]+[Space]            

ほとんどのIMEは英語配列キーボードの[Alt]+[`]で日本語/英数入力の切替が可能です。
英語配列キーボード [Alt]+[`]

物理キーボードにファンクションキーがない、あるいはfnキーと同時押しで面倒な場合でも、IMEによっては文字種変換をショートカットキーで行えます。

文字種変換 (Gboard/Google日本語入力/ATOK)
ひらがな変換 [Ctrl]+[u]
カタカナ変換 [Ctrl]+[i]
半角変換     [Ctrl]+[o]
全角無変換   [Ctrl]+[p]

Gboard/Google日本語入力
英数変換 [Ctrl]+[t]
Gboard/Google日本語入力で「物理キーボードの[Alt]キーで絵文字を表示」するように設定していた場合、[Alt]キーによる絵文字入力キーボードの表示中に英数直接入力が行なえます。(正式な仕様ではない可能性があります)

ATOK
英数変換(日本語配列) [Ctrl]+[@]
英数変換(英語配列)   [Ctrl]+'['

■ 追加機能 (アプリ内課金):

追加コンテンツ

一部のプラグイン等で必要とされる、以下のパッケージを追加します。
  • Git, curl - バージョン管理システム
  • Python - プログラミング言語
その他
  • マークダウンHTML変換プラグイン (実験的)

寄付について

一度の寄付であなたのすべてのデバイスで追加コンテンツが使用可能になります。またアップデートに寄付は必要ありません。
あなたが新しいデバイスを追加した場合、Google Playにはまだ課金の状態が反映されていないことがあります。
その場合は「Google Playの課金ダイアログ」が出るまでフローを進めてください。(課金する必要はありません)
「Google Playの課金ダイアログ」が表示された時点で、Google Playがサーバからデータを取得し最新の課金状態が反映されます。

python (pip)

DroidVim上のPythonはnumpy/scipyをサポートしていません。
これはnumpy/scipyの開発者がAndroid用のライブラリファイルを作成していないためです。

busybox-setup

追加コンテンツが特定のデバイス(Samsung社製など)にインストールされていると、一部のコマンド(lsなど)が機能しないことがあります。
このような場合は、"busybox-setup sysbin"を使用してください。

  1. :shell または Ctrl-z
  2. busybox-setup sysbin

まだ問題が起きる場合は初期化してから、個別のコマンド設定を行います。

初期化

  1. busybox-setup clean
  2. busybox-setup

個別のコマンド設定

  1. 例えばlsが動作しない場合はbusybox-setup sysbin lsbusybox-setup lsを実行します。
  2. もし動作しないコマンドがあれば、同様に処理します。

オプション        
{command}          指定したbusyboxコマンドを追加します(例: busybox-setup ls)
all                すべてのbusyboxコマンドを追加します(busybox-setup all)
sysbin {command}   デバイス本体の指定したコマンドを優先します(例: busybox-setup sysbin ls)
sysbin             デバイス本体の全てのコマンドを優先します(busybox-setup sysbin)
clean              すべての追加コマンドを消去します(busybox-setup clean)
オプションを指定しない場合は通常のインストールを行います。

■ 権限

DroidVimは以下の目的でネットワークアクセス権限を使用しています。
  • 追加コンテンツ
  • HTMLファイルプレビュー
  • ヘルプ
  • クラッシュリポート
気に入らない場合は自分でソースコードからビルドするか、使用を中止してください。

■ ソースコード:

DroidVimはオープンソースプロジェクトです。
https://github.com/shiftrot/droidvim

■ 連絡先:

<< Prev  |  PageTop