恥は/dev/nullへ by 初心者

プログラミング素人がのろのろと学んだことをつづっています♪

Gvimのインライン入力で困ったこと

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)を変更してビルドしたもの


Vimの挙動(ターミナルで「vim」と入力して起動)

(1)インライン入力可能 / 変換前の文字のサイズは普通(小さくない)
(2)インライン入力可能 / 変換前の文字のサイズは普通(小さくない)
(3)インライン入力可能 / 変換前の文字のサイズは普通(小さくない)


Gvimの挙動(ターミナルで「vim -g」と入力して起動)

(1)インライン入力可能 / 変換前の文字のサイズは小さい 
(2)インライン入力可能 / 変換前の文字のサイズは小さい 
(3)インライン入力可能 / 変換前の文字のサイズは普通(小さくない)


なお、冒頭に記述したとおり、ターミナルで「gvim」と入力して起動したGvimでは(1)〜(3)いずれのケースにおいてもインライン入力できませんでした(変換候補が別ウィンドウで表示されました)。