¿Qué puedo hacer si el texto sublime no se puede importar a chino en Linux?

  

Sublime Text es un editor de código con funciones potentes, pero Sublime Text no puede ingresar chino cuando se ejecuta bajo Linux. ¿Cómo resolver este problema? La siguiente pequeña serie le presentará la solución que Sublime Text no puede ingresar al chino en Linux.

1. Guarde el siguiente código sublime_imfix.c

código es el siguiente:

/*

sublime-imfix.c
.

uso LD_PRELOAD interponer alguna función para fijar sublime apoyo método de entrada para Linux

por Cjacker Huang "jianzhong.huang en 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;

struct _GdkRegion

{

tamaño de largo;

largos numRects;

* GdkRegionBox rectas;

extensiones GdkRegionBox;

};

* GtkIMContext local_context;

vacío

gdk_region_get_clipbox (const * GdkRegion región,

GdkRectangle * rectángulo)

{

g_return_if_fail (región = NULL); !!

g_return_if_fail (rectángulo = NULL);

rectangle- "x = "extents.x1;

rectangle-" de región y = de región "extents.y1;

rectangle-" width = de región "extents.x2 - de región" extents.x1;

rectangle- "height = de región" extents.y2 - de región "extents.y1;

GdkRectangle rect;

rect.x = rectangle-" x;

rect.y = Rectangle- "y;

rect.width = 0;

rect.height = rectangle-" altura;

//La anchura de intercalación es 2;

//Tal vez a veces se comete un error, pero para la mayoría de las veces, debe ser el símbolo de intercalación

Si (rectangle- "== ancho de 2 &>K_IS_IM_CONTEXT (local_context)). {

gtk_im_context_set_cursor_location (local_context, rectángulo);

}

}

//esto es necesario, por ejemplo, si introduce algo en diálogo de archivo y volver al área de edición

//se perdió contexto, por lo que aquí nos fijamos de nuevo.

event_filter GdkFilterReturn estática (GdkXEvent * XEvent, GdkEvent * evento, im_context gpointer)

{

* XEvent xev = (XEvent *) XEvent;

Si (tipo xev-" == KeyRelease &>K_IS_IM_CONTEXT (im_context)) {

GdkWindow * victoria = g_object_get_data (G_OBJECT (im_context), y " ventana y ");

Si (GDK_IS_WINDOW (ganar))

gtk_im_context_set_client_window (im_context, ganar);

}

GDK_FILTER_CONTINUE retorno;

}

vacío gtk_im_context_set_client_window (* GtkIMContext contexto, España

* GdkWindow ventana)

{

GtkIMContextClass * Klass;

g_return_if_fail (GTK_IS_IM_CONTEXT (contexto ));

klass = GTK_IM_CONTEXT_GET_CLASS (contexto);

si (klass- "set_client_window)

klass-" set_client_window (contexto, ventana);

si (! GDK_IS_WINDOW (ventana))

retorno;

g_object_set_data (G_OBJECT (contexto), y " ventana y ", ventana);

int width = gdk_window_get_width (ventana);

int height = gdk_window_get_height (ventana);

Si (ancho = 0 &! &height = 0) {

gtk_im_context_focus_in (contexto);

local_context = contexto;

}

gdk_window_add_filter (ventana, event_filter, contexto);

}

2. compilar biblioteca dinámica:

código es el siguiente:

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

3. conjunto LD_PRELOAD E inicie Sublime Text:

El código es el siguiente:

LD_PRELOAD =. /libsublime-imfix.so sublime_text

Con el fin de hacer tan sublime texto están jugando una larga lista de cosas cada vez que se inicia, escribir sublime script de inicio:

código es el siguiente:

#! /Bin /bash

SUBLIME_HOME = " /opt /sublime_text y "

LD_LIB = $ SUBLIME_HOME /libsublime-imfix.so

sh -c y " LD_PRELOAD = $ LD_LIB $ SUBLIME_HOME /sublime_text $ @ "

la Sublime Text libsublime-imfix.so en el directorio y modificar el SUBLIME_HOME guión, así Sublime Text puede ser introducir caracteres chinos.

Lo anterior es la introducción de la solución que Sublime Text no puede ingresar al chino en Linux. Simplemente siga los pasos anteriores y puede ingresar el chino en el texto sublime. ¿Es muy simple? Pruébalo.

Copyright © Conocimiento de Windows All Rights Reserved