トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Linux:SublimeTextで日本語入力できるようにする

Last-modified: 2014-07-19 (土) 23:31:39 (3561d)
Top / Linux:SublimeTextで日本語入力できるようにする

Linux:SublimeText?で日本語入力できるようにする

  • Update 2014.07.19

CentOS6.5にInputHelper?を導入して日本語入力可能とする方法です。

InputHelper?自体はPackageManager?でインストールします。

しかし、デフォルトの起動ショートカットである「Ctrl+Shift+z」を押しても、インプットウインドウは表示されません。

CentOS6.5でInputHelper?を動作させるためには以下の2つの作業を実施する必要があります。

  1. ファイルの権限設定
  2. パッチ

ファイルの権限設定

まず、うんともすんとも言わない状況は、メニューの「View」→「Show Console」からコンソールを表示することで確認できます。

小生の場合、以下のようなメッセージが表示されていました。

Traceback (most recent call last):
  File "./sublime_plugin.py", line 362, in run_
  File "./inputhelper.py", line 21, in run
  File ".\subprocess.py", line 633, in __init__
  File ".\subprocess.py", line 1139, in _execute_child
OSError: [Errno 13] 許可がありません

ふむふむ、なるほど。じゃあ、inputhelper.pyを確認してみます。

SublimeText?のメニュー「Preference」→「Browse Package」からパッケージインストールディレクトリを開き、「InputHelper?」ディレクトリを開きます。

すると、「inputhelper.py」が見つかるはずです。

これを開いてみると、21行目は、同ディレクトリ内の「lib」ディレクトリの「linux_text_input_gui.py」を子プロで実行しようとしている行であることがわかります。

?実行を試みている?

というわけで、権限チェックしたら「644」でしたw

というわけで、このファイルの権限を「775」に変更して再度実行したら、入力画面が表示されるようになります!

パッチ

さて、入力画面が表示されるようになって、実際に入力してみても、本来であれば「Enter」で入力終了であるはずなのに(ソースコード上)、入力が終わりません。

原因は

  • InputHelper?が要求するpygtkのバージョンが2.22以降
  • CentOS6系でインストール可能なpygtkのバージョンは2.18 ということです。

具体的には、このプラグインが使っている実装で、gtk.Entry.get_bufferメソッドを使用してますが、これがpygtk2.22以降に提供されているメソッドだからです。

最初は、CentOSに入っているpygtkを新しくしようと思っていろいろ調べていましたが、ソースいじったほうが早そうだったので、以下にパッチを載せます。

動かすためのパッチ

Sublimeのパッケージは以下のディレクトリに格納されます。

  • /.config/sublime-text-2/Packages

この中の「InputHelper?/lib」ディレクトリに入っている以下のファイルがパッチ対象です。

  • linux_text_input_gui.py

このファイルの18行目から始まるprint_textメソッドがパッチ対象です。

パッチの内容は

  • 19行目、20行目をコメントアウト
  • 21行目に「print self.textInput.get_text();」を追加

パッチ適用後のprint_textメソッドの内容を以下に記載します。

    def print_text(self):
#        buffer = self.textInput.get_buffer()
#        print buffer.get_text()
        print self.textInput.get_text()

これで、動くようになるはずです。

InputHelper?の設定

個人的には「Ctrl+Shift+z」はちょっと煩わしいため、「Ctrl+Space」に変更しています。

変更するためには、

  • /.config/sublime-text-2/Packages/InputHelper?

  • Default (Linux).sublime-keymap

を、以下の通りに変更します。

[

 { "keys": ["ctrl+shift+z"], "command": "input_helper" },
 { "keys": ["ctrl+space"], "command": "input_helper" }

]

すると、「Ctrl+Space」2発で日本語入力可能となります

うむ、これは便利w