centos下sublime2/3不能输入中文的问题
centos,desktop,sublime2016-07-11
import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
Preferences > Settings - User,添加Tab空格及显示:
“draw_white_space”: “all”,
“tab_size”: 4,
“translate_tabs_to_spaces”: true,
“font_face”: “YaHei Consolas Hybrid”,
Step 1: “Ctrl+`”调控制台,”Ctrl+Shift+Z”看输出:
FileNotFoundError: [Errno 2] No such file or directory: '/home/join/.config/sublime-text-3/Packages/InputHelper/lib/linux_text_input_gui.py'
https://github.com/xgenvn/InputHelper下载插件后安装到/home/xxx/.config/sublime-text-2/Packages/名称为InputHelper
Step 2: “Ctrl+Shift+Z”再看输出:
Traceback (most recent call last):
File "/opt/sublime_text/sublime_plugin.py", line 549, in run_
return self.run(edit)
File "/home/join/.config/sublime-text-3/Packages/InputHelper/inputhelper.py", line 21, in run
proc = subprocess.Popen(args, stdout=subprocess.PIPE)
File "X/subprocess.py", line 818, in __init__
File "X/subprocess.py", line 1416, in _execute_child
PermissionError: [Errno 13] Permission denied
chmod 777 /home/xxx/.config/sublime-text-3/Packages/InputHelper/lib/linux_text_input_gui.py
Step 3: 然后”Ctrl+Shift+Z”果真弹出了对话框,但Sublime UI阻塞,未响应。
cd /home/xxx/.config/sublime-text-3/Packages/InputHelper/lib/
python2.6.6 linux_text_input_gui.py
输入内容后回车,看到如下错误:
AttributeError: ‘gtk.Entry’ object has no attribute ‘get_buffer’
Traceback (most recent call last):
File “linux_text_input_gui.py”, line 14, in destroy
self.print_text()
File “linux_text_input_gui.py”, line 9, in print_text
buffer = self.textInput.get_buffer()
AttributeError: ‘gtk.Entry’ object has no attribute ‘get_buffer’
如果centos安装的是python2.6.6安装pygtk模块的话,则用以下解决方式,查看linux_text_input_gui.py文件得知给”linux_text_input_gui.py”的”SimpleTextInput::print_text()”添加打印,看”self.textInput”的属性。直接有”get_text”,所以做如下修改:
def print_text(self):
# buffer = self.textInput.get_buffer()
# print(buffer.get_text())
print(self.textInput.get_text())
问题解决
Step 4:如果报没有pygtk模块的话,需要使用pip安装pygtk这个很麻烦,可参考另一篇博客。