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解决无法输入中文的方法
       
  • 相关阅读:
    LeetCode 109 Convert Sorted List to Binary Search Tree
    LeetCode 108 Convert Sorted Array to Binary Search Tree
    LeetCode 107. Binary Tree Level Order Traversal II
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode 103 Binary Tree Zigzag Level Order Traversal
    LeetCode 102. Binary Tree Level Order Traversal
    LeetCode 104. Maximum Depth of Binary Tree
    接口和多态性
    C# 编码规范
  • 原文地址:https://www.cnblogs.com/nbalive2001/p/6530078.html
Copyright © 2011-2022 走看看