Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Sublime TextをLinuxで中国語にインポートできない場合はどうすればいいですか。

Sublime TextをLinuxで中国語にインポートできない場合はどうすればいいですか。

  
                

Sublime Textは強力な機能を備えたコードエディタですが、Sublime TextはLinuxで実行しているときに中国語を入力できません。次の小シリーズでは、Sublime TextがLinuxで中国語を入力できないという解決策を紹介します。

1.保存し、次のコードsublime_imfix.c

次のようにコードは次のとおりです。

/*

崇高-imfix.cの

LD_PRELOADを使用して、linuxの崇高な入力メソッドのサポートを修正するための関数を挿入します。

By Cjacker Huang "jianzhong.huang at i-soft.com.cn"

gcc -shared - o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk + -2.0` -fPIC

LD_PRELOAD =。 /libsublime-imfix.so sublime_text

* /

の#include "GTK /gtk.h"

の#include "GDK /gdkx.h"

のtypedef GdkSegment GdkRegionBox;

構造体_GdkRegion

{

長尺;

長いnumRects;

GdkRegionBox * rects;

GdkRegionBoxエクステント;

};

GtkIMContext * local_context;

ボイド

gdk_region_get_clipbox(CONST GdkRegion *領域、

GdkRectangle *矩形)

{

g_return_if_fail(領域= NULL); !!

g_return_if_fail(矩形= NULL);

rectangle-「X =領域 - "extents.x1;

rectangle-" Y =領域 - "extents.y1;

rectangle-" 幅=領域 - "extents.x2 - 領域 - " extents.x1;

rectangle- "高さ=領域 - " extents.y2 - 領域 - "extents.y1;

GdkRectangle RECT;

rect.x = rectangle-" X。

rect.y = Rectangle- "Y;

rect.width = 0;

rect.height = rectangle-" 高さ;

//キャレット幅は2であり;

//多分、時には私たちは間違いを犯しますが、ほとんどの時間のために、それがあるべきキャレット

もし(「幅== 2&#038 rectangle-;& GTK_IS_IM_CONTEXT(local_contextを))。 {

gtk_im_context_set_cursor_location(local_context、長方形);

}

}

//あなたのファイルダイアログで入力何かあれば、これは、例えば、必要とされていますそして
<

//コンテキストが失われますので、ここで我々は再びそれを設定する。

静的GdkFilterReturnのevent_filter(GdkXEvent *たXEvent、GdkEvent *イベント、gpointerのim_context)
編集領域をバック返しますP> {

たXEvent * XEV =(たXEvent *)たXEvent;

IF(xev-「タイプ== KeyRelease&#038;&#038; GTK_IS_IM_CONTEXT(im_context)){

GdkWindow *勝利= g_object_get_data(G_OBJECT(im_context)、'ウィンドウ');

IF(GDK_IS_WINDOW(勝利))

gtk_im_context_set_client_window(im_context、勝つ);

}

戻りGDK_FILTER_CONTINUE;

} < BR>

ボイドgtk_im_context_set_client_window(GtkIMContext *コンテキスト、

GdkWindow *ウィンドウ)

{

GtkIMContextClass *のklass;

g_return_if_fail(GTK_IS_IM_CONTEXT(コンテキスト));

のklass = GTK_IM_CONTEXT_GET_CLASS(コンテキスト);

IF(klass- "set_client_window)

klass-" set_client_window(コンテキスト、ウィンドウ);

(もし! GDK_IS_WINDOW(ウィンドウ))

return;

g_object_set_data(G_OBJECT(コンテキスト)、'、ウィンドウ);

int width = gdk_window_get_width(window);

int height = gdk_window_get_height(ウィンドウ);

if(width!= 0& height; = 0){

gtk_im_context_focus_in(context);

local_context = context;

}

gdk_window_add_filter(window、event_filter、context);

}

2.動的ライブラリをコンパイルします。

コードは以下のとおりです。

gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk + -2.0` -fPIC

3. LD_PRELOADを設定します。 Sublime Textを起動します。

コードは次のとおりです。

LD_PRELOAD =。 /libsublime-imfix.so sublime_text

毎回Sublime Textを起動せずに長いリストを作成するには、Sublimeを起動するスクリプトを作成します。

コードは次のとおりです。

#! /bin /bash

SUBLIME_HOME =' /opt /sublime_text'

LD_LIB = $ SUBLIME_HOME /libsublime-imfix.so

sh -c' LD_PRELOAD = $ LD_LIB $ SUBLIME_HOME /sublime_text $ @'

Sublime Textディレクトリにlibsublime-imfix.soを置き、Sublime Textを中国語で入力できるようにスクリプトのSUBLIME_HOMEを変更します。

上記はSublime TextがLinuxでは中国語を入力できないという解決策の紹介ですが、上記の手順に従ってSublime Textに中国語を入力することができます。試してみてください。

Copyright © Windowsの知識 All Rights Reserved