【linux学习笔记】Sublime Text3支持GB2312和GBK编码以及中文输入法
几天在ubuntu15.10下使用Sublime Text3发现中文乱码,以及不能使用中文输入法(搜狗输入法linux版)的问题,捣鼓了半天,终于完善了,下面po一下我的解决方案。
一.支持GB2312和GBK编码
1.1 安装Package Control
按住ctrl+~打开命令行,然后输入如下代码
import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())
1.2 安装ConvertToUTF8
首先,按住ctrl+shift+p,
然后,在弹出的搜索框中输入install package
最后,输入ConvertToUTF8,等待安装
安装完成后重启subline Text3即可。
二.支持中文输入法
2.1 安装GTK库
sudo apt-get install libgtk2.0-dev
2.2 编译动态库
新建文件sublime_imfix.c,输入如下代码:
/**********************************************************
> File Name: sublime_imfix.c
> Author: GatieMe
> Mail: gatieme@163.com
> Created Time: 2015年04月04日 星期六 20时20分12秒
**********************************************************/
#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);
}
将代码编译成共享库
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
将生成的so共享库拷贝到/opt/sublime_text目录下
sudo cp libsublime-imfix.so /opt/sublime_text/libsublime-imfix.so
修改/usr/bin/subl文件
sudo vim /usr/bin/subl
//sunl文件内容
#!/bin/sh
export LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so//第一行加入如下代码
exec /opt/sublime_text/sublime_text "$@"
打开sublime-text.desktop
cd /usr/share/applications/
sudo vim sublime_text.desktop
修改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=/usr/bin/subl %F//此行路径修改为/usr/bin/subl
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=/usr/bin/subl -n//此行路径修改为/usr/bin/subl
OnlyShowIn=Unity;
[Desktop Action Document]
Name=New File
Exec=/usr/bin/subl --command new_file//此行路径修改为/usr/bin/subl
OnlyShowIn=Unity;
至此,重启sublime,大功告成,中文不再乱码,输入法问题解决,愉快的享受sublime吧。
【linux学习笔记】Sublime Text3支持GB2312和GBK编码以及中文输入法的更多相关文章
- [转] Sublime Text 3支持GB2312和GBK编码
Sublime Text 3与Sublime Text 2的不同 其实有不少人写过如何让Sublime Text 2支持GB2312和GBK编码,例如这篇.基本原理就是先装好Package Contr ...
- Sublime Text 3技巧:支持GB2312和GBK编码
From: http://blog.csdn.net/ubuntulover/article/details/21101979 Sublime Text 3与Sublime Text 2的不同 其实有 ...
- Html5 学习笔记 Sublime text3 和 Emmet 插件
下载地址 :https://pan.baidu.com/s/1MpkaYdAcZd6RmPpmvOdK7w Emmet 压缩包 并且解压: 安装 Sublime Text 3, 选择首选项 浏览插件 ...
- Linux学习总结(九)—— CentOS常用软件安装:中文输入法、Chrome
中文输入法 切换到root用户,运行以下命令: yum install "@Chinese Support" 按照提示,一路Yes等待安装完成.安装完成后点击左上角System - ...
- 如何让.NET Core支持GB2312和GBK
在.NET Core中,默认是不支持GB2312和GBK编码的. 例如我们如果新建一个.NET Core控制台项目,然后在其Main方法中使用如下代码: using System; using Sys ...
- (转)Linux最常用指令及快捷键 Linux学习笔记
Linux最常用指令及快捷键 Linux学习笔记 原文:http://blog.csdn.net/yanghongche/article/details/50827478 [摘自 鸟叔的私房菜]--转 ...
- linux学习笔记2-linux的常用命令
第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...
- Linux学习笔记(一)2015.4.13
研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...
- deepin linux学习笔记
目录 deepin linux学习笔记 前言 linux常用命令 ls 显示文件夹内容 cd 切换当前目录 pwd 查看当前工作目录 mkdir 新建文件夹 rm 删除文件或文件夹 mv 移动文件 c ...
随机推荐
- prop与attr的区别
与prop一样attr也可以用来获取与设置元素的属性. 区别在于,对于自定义属性和选中属性的处理. 选中属性指的是 checked,selected 这2种属性 1. 对于自定义属性 attr能够获取 ...
- ajax中基本参数应用
$(function () { $("#verificationCodeBtn").click(function () { $("#verificationCodeIma ...
- JAVA 第二天 基本数据类型
在栈中可以直接分配内存的数据是基本数据类型.引用数据类型:数据的引用在栈中,但他的对象在堆中. 基本数据类型,小可转大,大转小会失去精度 第一类:逻辑型boolean 第二类:文本型char 第三类: ...
- 判定程序员等级,HashMap就够了
JDK1.8 HashMap源码分析 用到的符号: ^异运算:两个操作数相同,结果是;两个操作数不同,结果是1. &按位与:两个操作数都是1,结果才是1. 一.HashMap概述 在JDK1 ...
- spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护
在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...
- Go 语言范围(Range)
Go 语言中 range 关键字用于for循环中迭代数组(array).切片(slice).链表(channel)或集合(map)的元素.在数组和切片中它返回元素的索引值,在集合中返回 key-val ...
- django模板语言中的extends,block和include
extends和block一起用 它们用于母版和子版的继承 在母版html中将一些需要替换的部分用{% block xxx %}...{% endblock %}括起来, 在子版html中,在第一行需 ...
- SpringMVC之Ajax与Controller交互
前面学习了拦截器,通过拦截器我们可以拦截请求,做进一步处理之后再往下进行,这里我们使用Ajax的时候会有一个问题就是会把js.css这些静态资源文件也进行了拦截,这样在jsp中就无法引入的静态资源文件 ...
- 弹出层之2:JQuery.BlockUI
JQuery.BlockUI是众多JQuery插件弹出层中的一个,它小巧(原版16k,压缩后10左右),容易使用, 功能齐全,支持Iframe,支持Modal,可定制性高也意味他默认谦虚的外表. jQ ...
- Bootstrap3 表格-紧缩表格
通过添加 .table-condensed 类可以让表格更加紧凑,单元格中的内补(padding)均会减半. <table class="table table-condensed&q ...