search
HomeDevelopment ToolssublimeHow does sublime text 3 support Chinese input under Ubuntu?

The following tutorial column from sublime will introduce to you how sublime text 3 supports Chinese input under Ubuntu. I hope it will be helpful to friends in need!

  • Installation of related dependent software---sudo apt-get install build-essential libgtk2.0-dev
  • Copy the following code to sublime text 3 and save it as The file of sublime_imfix.c
/*
 * sublime-imfix.c
 * Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
 * By Cjacker Huang <jianzhong.huang> *
 *
 * 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>
#include <gdk>

typedef GdkSegment GdkRegionBox;

struct _GdkRegion
{
    long size;
    long numRects;
    GdkRegionBox *rects;
    GdkRegionBox extents;
};

GtkIMContext *local_context;

void
gdk_region_get_clipbox (const GdkRegion *region,
                        GdkRectangle    *rectangle)
{
    g_return_if_fail (region != NULL);
    g_return_if_fail (rectangle != NULL);

    rectangle->x = region->extents.x1;
    rectangle->y = region->extents.y1;
    rectangle->width = region->extents.x2 - region->extents.x1;
    rectangle->height = region->extents.y2 - region->extents.y1;
    GdkRectangle rect;
    rect.x = rectangle->x;
    rect.y = rectangle->y;
    rect.width = 0;
    rect.height = rectangle->height;

    //The caret width is 2;
    //Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.
    if (rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
        gtk_im_context_set_cursor_location(local_context, rectangle);
    }
}
//this is needed, for example, if you input something in file dialog and return back the edit area
//context will lost, so here we set it again.

static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)
{
    XEvent *xev = (XEvent *)xevent;

    if (xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {
        GdkWindow *win = g_object_get_data(G_OBJECT(im_context), "window");

        if (GDK_IS_WINDOW(win)) {
            gtk_im_context_set_client_window(im_context, win);
        }
    }

    return GDK_FILTER_CONTINUE;
}

void gtk_im_context_set_client_window (GtkIMContext *context,
                                       GdkWindow    *window)
{
    GtkIMContextClass *klass;
    g_return_if_fail (GTK_IS_IM_CONTEXT (context));
    klass = GTK_IM_CONTEXT_GET_CLASS (context);

    if (klass->set_client_window) {
        klass->set_client_window (context, window);
    }

    if (!GDK_IS_WINDOW (window)) {
        return;
    }

    g_object_set_data(G_OBJECT(context), "window", window);
    int width = gdk_window_get_width(window);
    int height = gdk_window_get_height(window);

    if (width != 0 && height != 0) {
        gtk_im_context_focus_in(context);
        local_context = context;
    }

    gdk_window_add_filter (window, event_filter, context);
}</gdk></gtk></jianzhong.huang>
  • Find the file location in the terminal and compile this file into the shared library libsublime-imfix.so----Enter the command
    gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk -2.0` -fPIC
  • Copy libsublime-imfix.so to the folder where sublime_text is located ---sudo mv libsublime-imfix .so /opt/sublime_text/
  • Modify the contents of the file /usr/bin/subl ---sudo gedit /usr/bin/subl
  • will
#!/bin/sh
exec /opt/sublime_text/sublime_text "$@"
  • Modify to
#!/bin/sh
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"

In this way, we can enter Chinese in sublime by typing subl to start from the terminal!

Finally, in order to facilitate us to use Chinese input when starting directly, we need to open and modify the contents of the file sublime_text.desktop in the terminal command---sudo gedit /usr/share/applications/sublime_text.desktop

[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code,markup and prose
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"
Terminal=false
MimeType=text/plain;
Icon=sublime-text
Categories=TextEditor;Development;Utility;
StartupNotify=true
Actions=Window;Document;

X-Desktop-File-Install-Version=0.22

[Desktop Action Window]
Name=New Window
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text -n"
OnlyShowIn=Unity;
[Desktop Action Document]
Name=New File
Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text --command new_file"
OnlyShowIn=Unity;

Replace the content with the above code content, and we are done! Of course, for the sake of stability, it is better to start from the terminal!

*Note
Because we will see two icons, one of which can input Chinese only when it is started, and the other one still cannot input

The above is the detailed content of How does sublime text 3 support Chinese input under Ubuntu?. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:jianshu. If there is any infringement, please contact admin@php.cn delete
How to run sublimeHow to run sublimeApr 16, 2025 am 09:39 AM

To run Sublime Text, you need to download, install the application, purchase a license (optional), and then launch the application. Create or open a file to start encoding.

How to Chinese sublimeHow to Chinese sublimeApr 16, 2025 am 09:36 AM

Sublime Text can be Chineseized through the following steps: 1. Download the Chinese package; 2. Install the Chinese package; 3. Restart Sublime Text; 4. Set the default language (optional); 5. Verify the Chinese version.

How to delete sublime plug-inHow to delete sublime plug-inApr 16, 2025 am 09:33 AM

There are two ways to delete plugins in Sublime Text: Delete through the Plug-in Manager: Select the plug-in you want to delete and right-click and select "Delete". Manually Delete: Navigate to the user data directory, locate the plugin folder and drag it to the Recycle Bin or Trash.

How to write code with gbk in sublimeHow to write code with gbk in sublimeApr 16, 2025 am 09:30 AM

To write code using GBK encoding in Sublime Text, you need to: 1. Set the project encoding to GBK; 2. Create a new file; 3. Select GBK encoding when saving as; 4. Enter the code using GBK encoding.

How to change sublime to ChineseHow to change sublime to ChineseApr 16, 2025 am 09:27 AM

sublime can be translated into Chinese as: 1. Sublime, sacred; 2. Extreme, extraordinary; 3. Indescribable, awesome; 4. Sublime thought.

How to get the registration code for sublimeHow to get the registration code for sublimeApr 16, 2025 am 09:24 AM

The steps to purchase a Sublime Text registration code are as follows: Visit the website and select "Buy". Select the license type and enter information. Pay and receive emails containing registration codes. Open Sublime Text, go to the License menu and paste the registration code. Click Register to activate your registration code and advanced features.

How to save the code in sublimeHow to save the code in sublimeApr 16, 2025 am 09:21 AM

Sublime Text provides a variety of ways to save code, including shortcut keys (Ctrl S), menu bar (File > Save), toolbar (disk icon), and command panel (Ctrl P). In addition, it also provides an automatic save function, which can automatically save open files regularly.

How to use arrow function for sublimeHow to use arrow function for sublimeApr 16, 2025 am 09:18 AM

Use arrow functions to define anonymous functions in Sublime Text concisely and quickly, with the syntax: (parameter list) => expressions. The advantages include simplicity, readability, scope inheritance and closure functions. Notes include extension operators and this keyword limitations, and the need for explicit return statements for multi-line functions.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor