Linux上のGvimで日本語を入力する時に困ったことが2つありました。
インライン入力できない
まず最初に困ったのは、そもそもGvimでインライン入力ができないことです。日本語入力をしてみたら、変換前の文字がインライン表示されず、別ウィンドウで表示されてしまいました。
これに関しては、gvimコマンドではなく
vim -g
でGvimを起動すれば良いという情報がネット上にありました。実際、そうしてみたらインライン入力できました。
変換前の文字が小さい
次に困ったのは、インライン入力時に表示される文字(変換前の文字)のサイズが小さいことです。こちらに関しては以下の記事が参考になりました。
https://github.com/vim-jp/issues/issues/1353
以下は上記記事からの引用です。
diff --git a/src/gui_xim.c b/src/gui_xim.c index e45e1793f..a333c7c6f 100644 --- a/src/gui_xim.c +++ b/src/gui_xim.c @@ -251,7 +251,7 @@ im_preedit_window_open() #if GTK_CHECK_VERSION(3,16,0) { GtkStyleContext * const context - = gtk_widget_get_style_context(gui.drawarea); + = gtk_widget_get_style_context(preedit_label); GtkCssProvider * const provider = gtk_css_provider_new(); gchar *css = NULL; const char * const fontname @@ -275,7 +275,7 @@ im_preedit_window_open() fontsize_propval = g_strdup_printf("inherit"); css = g_strdup_printf( - "widget#vim-gui-preedit-area {\n" + "#vim-gui-preedit-area {\n" " font-family: %s,monospace;\n" " font-size: %s;\n" " color: #%.2lx%.2lx%.2lx;\n"
この内容にしたがってVimのソースコード gui_xim.c を一部編集しました。
ファイルの場所は以下のとおりです。
vim/src/gui_xim.c
このファイルの
GtkStyleContext * const context = gtk_widget_get_style_context(gui.drawarea);
という部分を
GtkStyleContext * const context = gtk_widget_get_style_context(preedit_label);
に変更します。
次に
css = g_strdup_printf( "widget#vim-gui-preedit-area {\n" " font-family: %s,monospace;\n"
という部分を
css = g_strdup_printf( "#vim-gui-preedit-area {\n" " font-family: %s,monospace;\n"
に変更します。
このファイルにもとづいてビルドすれば作業は終わりです。
ビルドが終わった後、vim -gで起動したgvimにおいてインライン入力を試したところ、変換前の文字は小さくなく見やすい状態になっていました。
その他
以下は、上述の作業をした際に調べた内容です。
対象は以下のとおりです。
(1)aptでDebianリポジトリからインストールしたもの
(2)ソース(gui_xim.c)に変更を加えずにビルドしたもの
(3)ソース(gui_xim.c)を変更してビルドしたもの
(1)インライン入力可能 / 変換前の文字のサイズは普通(小さくない) (2)インライン入力可能 / 変換前の文字のサイズは普通(小さくない) (3)インライン入力可能 / 変換前の文字のサイズは普通(小さくない)
Gvimの挙動(ターミナルで「vim -g」と入力して起動)
(1)インライン入力可能 / 変換前の文字のサイズは小さい (2)インライン入力可能 / 変換前の文字のサイズは小さい (3)インライン入力可能 / 変換前の文字のサイズは普通(小さくない)
なお、冒頭に記述したとおり、ターミナルで「gvim」と入力して起動したGvimでは(1)〜(3)いずれのケースにおいてもインライン入力できませんでした(変換候補が別ウィンドウで表示されました)。