日本語入力へはファンクションバーの"🔤"キーを使用して、「英数直接入力」/「通常入力」を切り替えてください。
なお一行テキスト入力ウィンドウを使用する場合は"🔤"キーによる切り替えは不要です。
その他にも以下の方法で通常入力(日本語入力)への切替が行えます。
- 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によっては以下の設定が必要かもしれません。
let g:imactivate_language_switch = 61
■ 物理キーボード
「挿入モード」で
<C-^>
(
<C-6>
)を押すことで
iminsert
を利用して通常入力(日本語入力)に切り替えが行えます。
<C-^>
はVimコマンドなので「挿入モード」の任意のキーにマップできます。
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専用の文字種変更プラグインが同梱されています。
let g:imctrl_normal=53
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]+[`]で日本語/英数入力の切替が可能です。
物理キーボードにファンクションキーがない、あるいはfnキーと同時押しで面倒な場合でも、IMEによっては文字種変換をショートカットキーで行えます。
文字種変換 (Gboard/Google日本語入力/ATOK)
ひらがな変換 | [Ctrl]+[u] |
カタカナ変換 | [Ctrl]+[i] |
半角変換 | [Ctrl]+[o] |
全角無変換 | [Ctrl]+[p] |
Gboard/Google日本語入力
Gboard/Google日本語入力で「物理キーボードの[Alt]キーで絵文字を表示」するように設定していた場合、[Alt]キーによる絵文字入力キーボードの表示中に英数直接入力が行なえます。(正式な仕様ではない可能性があります)
ATOK
英数変換(日本語配列) | [Ctrl]+[@] |
英数変換(英語配列) | [Ctrl]+'[' |