zoukankan      html  css  js  c++  java
  • 解决Ubuntu下Sublime Text 3无法输入中文

    前言

    sublime很好用,但是ubuntu下不能输入中文,这是一个很大的问题。不知道为什么开发着一直也不解决,好在还是有高手在,总能找到方法。网上方法很多,但是也很乱,现在我将自己的经验总结一下。

    首先,我参考了好几篇文章,都是蛮不错的,先列出来:

    1. sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题。可用这个的强烈推荐用这个
    2. 完美解决 Linux 下 Sublime Text 中文输入:讲的比较明白,也可用参考。
    3. Ubuntu下Sublime Text 3解决无法输入中文的方法: 讲解的最清楚了,建议看看。

    我的方法

    1.下载我们需要的文件,打开终端,输入:

    git clone https://github.com/lyfeyaj/sublime-text-imfix.git

    2.将subl移动到/usr/bin/,并且将sublime-imfix.so移动到/opt/sublime_text/(sublime的安装目录)
    终端输入:

    cd ~/sublime-text-imfix
    sudo cp ./lib/libsublime-imfix.so /opt/sublime_text/
    sudo cp ./src/subl /usr/bin/

    3.用subl命令试试能不能启动sublime,如果成功启动的话,应该就可以输入中文了。
    终端输入:

    LD_PRELOAD=./libsublime-imfix.so subl

    4.但是这样子只能用上述命令行启动才能输入中文,我们需要更简单的办法,我选择新建一个shell脚本,很简单,就一句话。
    sublime新建文件输入:

    #!/bin/bash
    LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so subl

    然后将文件另存为sublime(注意:没有后缀),并且放到/home文件夹。

    5.至此,所有工作完成了。想要启动,直接终端输入:bash ~/sublime,就可以启动sublime,并且能够输入中文。

    6.如果不需要输入中文,直接按以前的方式打开即可。建脚本文件的目的就是方便打开能输入中文的sublime。

    说明

    这只是一个权宜之计,完美的解决办法还没有,只能等sublime开发者更新。
    网上所谓的完美解决,还是有问题,比如如果更改桌面快捷方式,那么sublime的Browse Packages功能不能使用,当然,还有其他问题。为了正常使用,我就没改。当然如果你中文输入比较多,还是建议修改桌面快捷方式,毕竟那会方便很多,具体怎么样,自己取舍。

    另外,输入法不跟框,暂时无解啊。

    1. 本经验目前在Ubuntu14.04环境下,已有搜狗输入法 for Linux和Sublime Text 3的情况下安装成功。

      Ubuntu下Sublime Text 3解决无法输入中文的方法
      END

    解决方法步骤2

     
    1.  

      保存下面的代码到文件sublime_imfix.c(位于~目录)

      #include <gtk/gtkimcontext.h>

      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);

       g_object_set_data(G_OBJECT(context),"window",window);

       if(!GDK_IS_WINDOW (window))

         return;

       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);

      }

      Ubuntu下Sublime Text 3解决无法输入中文的方法
    2.  

      将上一步的代码编译成共享库libsublime-imfix.so,命令

      cd ~

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

      這一步也許需要

      安装 C/C++ 的编译环境和 gtk libgtk2.0-dev

      sudo apt-get install build-essential
      sudo apt-get install libgtk2.0-dev

      Ubuntu下Sublime Text 3解决无法输入中文的方法
    3.  

      然后将libsublime-imfix.so拷贝到sublime_text所在文件夹

      sudo mv libsublime-imfix.so /opt/sublime_text/

      Ubuntu下Sublime Text 3解决无法输入中文的方法
    4.  

      修改文件/usr/bin/subl的内容

      sudo gedit /usr/bin/subl

      #!/bin/sh

      exec /opt/sublime_text/sublime_text "$@"

      修改为

      #!/bin/sh

      LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@"

      此时,在命令中执行 subl 将可以使用搜狗for linux的中文输入

      Ubuntu下Sublime Text 3解决无法输入中文的方法
    5.  

      为了使用鼠标右键打开文件时能够使用中文输入,还需要修改文件sublime_text.desktop的内容。

      命令

      sudo gedit /usr/share/applications/sublime_text.desktop

      将[Desktop Entry]中的字符串

      Exec=/opt/sublime_text/sublime_text %F

      修改为

      Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text %F"

      将[Desktop Action Window]中的字符串

      Exec=/opt/sublime_text/sublime_text -n

      修改为

      Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text -n"

      将[Desktop Action Document]中的字符串

      Exec=/opt/sublime_text/sublime_text --command new_file

      修改为

      Exec=bash -c "LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text --command new_file"

      注意:

      修改时请注意双引号"",否则会导致不能打开带有空格文件名的文件。

      此处仅修改了/usr/share/applications/sublime-text.desktop,但可以正常使用了。

      opt/sublime_text/目录下的sublime-text.desktop可以修改,也可不修改。

      Ubuntu下Sublime Text 3解决无法输入中文的方法
    6.  

      经过以上步骤我们能在Sublime中输入中文了。

      Ubuntu下Sublime Text 3解决无法输入中文的方法
       
  • 相关阅读:
    maven 仓库配置 pom中repositories属性
    Spring Boot集成持久化Quartz定时任务管理和界面展示
    gradle使用总结
    sqlserver 分页
    MyBatis特殊字符转义
    Mybatis中#{}和${}传参的区别及#和$的区别小结
    Markdown 手册
    Spring boot——logback.xml 配置详解(四)<filter>
    Spring boot——logback.xml 配置详解(三)<appender>
    Spring boot——logback.xml 配置详解(二)
  • 原文地址:https://www.cnblogs.com/nbalive2001/p/6530078.html
Copyright © 2011-2022 走看看