解决Ubuntu下sublime中不能输入中文的问题
解决Ubuntu下sublime中不能输入中文的问题
Ubuntu下安装sublime后,不能输入中文,而在其他软件中能正常输入,这是sublime的bug,解决方案是在通过shell在每次运行sublime前自动添加一个动态修正库,解决过程如下:
进入某个目录如~:
cd
新建一个C源代码
subl 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); }
在能编译之前可能需要安装依赖包,通过以下命令完成:
sudo apt-get install build-essential sudo apt-get install libgtk2.0-dev
然后编译C文件:
gcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
接下来在每次运行sublime程序之前告诉程序链接上这个.so库文件即可在sublime中输入中文,其命令是LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text "$@",其中/opt/sublime_text/是sublime安装的默认目录。命令行的subl还是Dash的Sublime Text,或是文件浏览器里的open with> sublime text,他们都能启动sublime程序,但不必寻找他们的启动入口,而后一一改之。他们都依赖于执行/opt/sublime_text/sublime_text,利用此特点,将/opt/sublime_text/sublime_text二进制另存,之后写个名为/opt/sublime_text/sublime_text的shell脚本,其中实现在执行新建此shell脚本以前的/opt/sublime_text/sublime_text二进制之前,告诉程序链接.so修正库文件。过程如下:
cd /opt/sublime_text/ sudo mv sublime_text sublime_text0 sudo vim sublime_text # 不熟悉vim者亦可sudo gedit sublime_text
在一行内写入以下语句后保存:
LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so exec /opt/sublime_text/sublime_text0 "$@"
sudo chmod +x sublime_text
至此应该可以在sublime中输入中文了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗