用户配置文件
一般作为普通用户,没有权限修改全局配置文件,可以将配置文件放在用户目录,就可以编辑:
mkdir -p $XDG_CONFIG_HOME/ibus/sogoupycc
gvim $XDG_CONFIG_HOME/ibus/sogoupycc/config.lua
默认情况下,用户配置文件和全局配置文件同时生效。$XDG_CONFIG_HOME 一般为 $HOME/.config/。
配置文件说明
语法说明
配置文件实际上是一个 lua 脚本,遵循 lua 语法。
如果你不熟悉 lua,修改配置文件没有生效,请先确认代码不是注释。lua 的注释规则是:
-- 以双减号开头,到行尾都是的是注释,所以这一行是注释
blabla -- 这里也是注释,但前面的 blabla 不是
-- 被 --[[ 和 --]] 括起来的部分都是注释
--[[ 这里就是注释
这一行也是注释
这里还是注释,但后面的 blabla 不是 --]] blabla
如果配置文件中有产生错误,从命令行运行输入法可以看到错在哪里。
注意 如果你熟悉 lua ,那么下面的内容将对你有帮助。如果你不熟悉,也可以直接修改配置,请参考配置样例
常量说明
| 名称 | 说明 |
| ime.VERSION | 版本字符串 |
| ime.PKGDATADIR | 软件包路径 比如 "/usr/share/ibus-sogoupycc" |
| ime.USERCONFIGDIR | 用户配置路径 比如 "/home/user/.config/ibus/sogoupycc" |
| ime.USERCACHEDIR | 用户缓存路径 比如 "/home/user/.cache/ibus/sogoupycc" |
| ime.USERDATADIR | 用户数据路径 比如 "/home/quark/.local/share/ibus/sogoupycc" |
| ime.DIRSEPARATOR | 目录分割符号 应该是 "/" |
| ime.INVALID_COLOR | 无效的颜色,表示不修改该项颜色 |
| key.None | 不是任何一个键 |
| key.Shift_L | Left Shift |
| key.Shift_R | Right Shift |
| key.Control_L | Left Control |
| key.Control_R | Right Control |
| key.Alt_L | Left Alt |
| key.Alt_R | Right Alt |
| key.Tab | Tab |
| key.space | Space |
| key.Return | Enter |
| key.BackSpace | Backspace |
| key.Escape | Escape |
| key.Delete | Delete |
| key.Page_Up | Page Up |
| key.Page_Down | Page Down |
| key.CONTROL_MASK | Control (在 modifiers 中使用,下同) |
| key.SHIFT_MASK | Shift |
| key.LOCK_MASK | Caps Lock |
| key.MOD1_MASK | 通常是 Alt_L, Alt_R, Meta_L |
| key.MOD4_MASK | 通常是 Super_L, Hyper_L |
| key.SUPER_MASK | Super (可能不能用) |
| key.META_MASK | Meta |
如果你想使用上表未列出的键,可以参考 ibuskeysyms.h
配置项说明
| 名称 | 说明 | 默认值 | 要求版本 最后改动版本 |
| ime.db_result_limit | 外部字词库结果限制 0 表示无限制 | 128,结果最多 128 个 | 0.2.0 |
| ime.db_length_limit | 外部词库查询时长度限制 应该在 1 到 15 之间 | 10,不查询超过 10 个汉字的词 | 0.2.0 |
| ime.db_phrase_adjust | 长词组位置调整 0 为没有调整,负数向后调整,正数向前调整 | 1.2,将长词组位置稍微提前 | 0.2.0 |
| ime.db_completion_adjust | 使用本地词库补全时,长词组位置调整 0 为没有调整,负数向后调整,正数向前调整 | 4,将长词组位置大幅度提前 | 0.2.1 |
| ime.db_query_order | 字词库查询顺序 "2" 为内部 gb2312 单字库 (将按音调列出) "d" 为外部字词库 (ibus-pinyin 1.2.99 兼容) "c" 为部分缓存结果 "w" 为云服务器提供的词语 '2d' 即为,先列出内部 gb2312 单字库, 紧跟着列出外部字词库 (如果有的话)。 | 'cwd2' | 0.2.0 0.2.3 |
| ime.fallback_use_db | 如果请求有失败的情况,使用加载的第一个本地词库补全 | true 如果没有加载词库,那么此选项无效 | 0.2.1 |
| ime.fallback_pre_request | 是否在预请求超时的时候,也使用本地词库补全 此项为 true 会重写 ime.cache_requests | true | 0.2.1 |
| ime.preedit_fore_color | 正在编辑的拼音前景色 | 0x0050FF | 0.2.0 |
| ime.preedit_back_color | 正在编辑的拼音背景色 | ime.COLOR_NOCHANGE | 0.2.0 |
| ime.local_cache_fore_color | 本地词库预请求结果前景色 | 0x8C8C8C | 0.2.1 |
| ime.local_cache_back_color | 本地词库预请求结果背景色 | ime.COLOR_NOCHANGE | 0.2.1 |
| ime.cloud_cache_fore_color | 云预请求结果前景色 | 0x0050FF | 0.2.1 |
| ime.cloud_cache_back_color | 云预请求结果前景色 | ime.COLOR_NOCHANGE | 0.2.1 |
| ime.requesting_fore_color | 请求中的拼音前景色 | ime.COLOR_NOCHANGE | 0.2.0 |
| ime.requesting_back_color | 请求中的拼音背景色 | 0xB8CFE5 | 0.2.0 |
| ime.responsed_fore_color | 请求完成的字串前景色 | 0x0024B2 | 0.2.0 |
| ime.responsed_back_color | 请求完成的字串背景色 | ime.COLOR_NOCHANGE | 0.2.0 |
| ime.correcting_fore_color | 纠正模式中文字前景色 | ime.COLOR_NOCHANGE | 0.2.0 |
| ime.correcting_back_color | 纠正模式中文字背景色 | 0xFFB442 | 0.2.0 |
| ime.cloud_cache_candicate_color | 选词时缓存词条的颜色 | 0x0050FF | 0.2.3 |
| ime.cloud_word_candicate_color | 选词时云服务器给出词条的颜色 | 0x00A811 | 0.2.3 |
| ime.database_candicate_color | 选词时本地词库词条的颜色 | ime.COLOR_NOCHANGE | 0.2.3 |
| ime.internal_candicate_color | 选词时内置 gb2312 字库词条的颜色 | 0x8C8C8C | 0.2.3 |
| ime.multi_tone_limit | 纠正模式允许匹配的多音字情况数 过大的值会使得纠正模式查词缓慢 | 4 允许有 4 种不同的读音出现 | 0.2.0 |
| ime.sel_timeout | 当选择一段新的文字之后, 如果超过这个时间, 则再按纠正热键也不会起作用 | 3.0 3 秒钟后超时 | 0.2.0 |
| ime.show_cache_preedit | 是否在正在编辑的拼音串中显示有缓存的结果 | true | 0.2.0 |
| ime.pre_request | 是否预先发送请求并缓存,如果为 true 则 ime.cache_requests = true | true | 0.2.0 |
| ime.pre_request_timeout | 预请求超时 | 0.6,0.6 秒钟 | 0.2.0 0.2.5 |
| ime.pre_request_retry | 为相同的内容发送预请求最多多少次 | 4,4次 | 0.2.3 |
| ime.preedit_reserved_pinyin | 拼音编辑串中保留最右边多上个拼音 | 0 | 0.2.5 |
| ime.request_timeout | 普通请求的超时 | 12.0,12 秒钟 | 0.2.1 0.2.3 |
| ime.strict_timeout | 使用严格的超时控制,否则,使用粗略的超时控制 如果此选项造成输入法不稳定,请改成 false | true | 0.2.3 |
| ime.quick_response_key | 非选词时,迅速让正在进行的所有请求超时, 完成未完成的请求,不管结果质量如何 (需要词库支持) | key.Alt_R | 0.2.1 |
| ime.eng_mode_key | 中文模式切换到英文模式热键 | key.Shift_L | 0.2.0 |
| ime.chs_mode_key | 英文模式切换到中文模式热键 | key.Shift_L | 0.2.0 |
| ime.correction_mode_key | 纠正模式和自选词热键 | key.Tab | 0.2.0 |
| ime.page_down_key | 选词列表向下翻页热键 | ('h'):byte() | 0.2.0 |
| ime.page_down_key | 选词列表向上翻页热键 | ('g'):byte() | 0.2.0 |
| ime.raw_preedit_key | (中文状态下)直接提交输入英文内容热键 | key.Shift_R | 0.2.5 |
| ime.show_notificaion | 是否显示桌面提示 (via libnotify) | true | 0.2.0 |
| ime.static_notification | 桌面提示是否最多显示一个 (建议 notify-osd 用户开启此项) | false | 0.2.0 |
| ime.use_double_pinyin | 是否使用双拼 | false | 0.2.0 |
| ime.strict_double_pinyin | 是否只接受严格的双拼输入 (双拼模式下) | false,不能解析的双拼字符串视为全拼 如果为 true,拒绝不合法的双拼输入 | 0.2.0 0.2.1 |
| ime.auto_eng_tolerance | 当连续多少个不完整的拼音,认为是实际不是拼音,自动切换到英文状态 如果是负数,则禁用自动切换到英文功能 | 5 | 0.2.1 0.2.5 |
| ime.start_in_eng_mode | 是否英文模式 | false | 0.2.0 |
| ime.cache_requests | 是否缓存请求和自选词的结果, 可能被 ime.pre_request 改写为 true | true | 0.2.0 |
| ime.label_keys | 用于选词的按键 由于 ibus 限制,最多 16 个 可以是字符串或者按键数组 | "jkl;uiopasdf" | 0.2.0 |
| ime.fetcher_path | 云请求脚本路径 该脚本接受一个可能用空格做分割的拼音字符串为参数, 以及一个可选的浮点数作为超时时间 (第二个参数) 将请求结果写到标准输出, 该脚本需处理超时情况, 若出现错误,应该输出一空行 | ime.PKGDATADIR .. "/fetcher" | 0.2.0 |
| ime.full_pinyin_adjustments | 全拼分隔符修正表格 | 参见全局配置文件 | 0.2.5 |
| ime.punc_after_chinese | 出现在其中的英文标点, 只有在刚输入完汉字之后才使用对应的中文标点 | ".,:" | 0.2.1 0.2.2 |
| ime.punc_map | 中英文标点符号转换表 对于多状态的标点,允许使用数组表示 | 默认为 nil,此时相当于下方代码 | 0.2.0 |
ime.punc_map = { ['.'] = '。', [','] = ',', ['^'] = '……', ['@'] = '·',
['!'] = '!', ['~'] = '~', ['?'] = '?',
['#'] = '#', ['$'] = '¥', ['&'] = '&',
['('] = ' (', [')'] = ')', ['{'] = '{',
['}'] = '}', ['['] = '[', [']'] = ']',
[';'] = ';', [':'] = ':', ['<'] = '《',
['>'] = '》', ['\\'] = '、',
["'"] = { '‘', '’'}, ['"'] = { '“', '”'}
}缓存
_G.request_cache 是一个用于请求和自选词的结果的缓存,可以用来设置简单的用户词库,例如
request_cache['w'] = '我'
request_cache['zhen de ma'] = '真的吗?'
函数说明
通过函数设置的选项皆为立即生效
| 名称 | 说明 | 参数 | 返回值 | 要求版本 |
| ime.set_debug_level(level) | 设置调试信息输出级别 | level 0 到 10 之间的整数 0 为不输出任何调试信息 | 无 | 0.2.0 |
ime.load_database (filename, weight) | 加载 ibus-pinyin 1.2 兼容词库 | filename 字符串,文件名 weight 浮点数,权重系数 加载多个词库后,查询时将乘以各自的权重 | 第一次加载成功为 1 否则为 0 | 0.2.0 |
| ime.chars_to_pinyin(chars) | 将汉字转换回拼音 | chars 字符串,一串汉字 | 用空格分隔的全拼字符串 | 0.2.0 |
| ime.double_to_full_pinyin(double_pinyin) | 将双拼字符串转换成全拼 | double_pinyin 双拼字符串,比如 "womf" | 用空格分隔的全拼字符串 | 0.2.0 |
| ime.database_count() | 查询已经加载的外部词库个数 | 无 | 一个整数,表示已经加载的词库数 | 0.2.0 |
| ime.apply_settings() | 立即应用设置 一般设置会在配置脚本执行完后读入 这个函数可以让输入法立即读入那些变量表示的设置 | 无 | 无 | 0.2.0 |
ime.set_double_pinyin_scheme (scheme) | 设置双拼方案 输入法没有内置默认双拼方案 使用双拼一定要先设置双拼方案 | scheme 双拼方案, 在声母部分使用 "-" 表示禁用,零声母使用 "", 具体请参考默认配置文件,常见的双拼方案见本页后面 | 歧义数 (按两个键,可能有多种全拼解释为歧义) 正确的双拼布局歧义数应该是 0 | 0.2.0 |
ime.register_command (key, modifiers, label, script) | 注册一个扩展 | key 按键 (只能是数字,即 key.xxx 形式或者 ('k'):byte() ) modifiers 组合键状态,只能是数字 label 字符串,名称 script 字符串,一段 lua 脚本 | 无 | 0.2.0 |
| ime.bitand(a, b) | 按位与 | a, b 两个整数 | 按位与结果 | 0.2.0 |
| ime.bitor(a, b) | 按位或 | a, b 两个整数 | 按位或结果 | 0.2.0 |
| ime.get_selection() | 获得当前选定内容 | 无 | 字符串,选定内容,可能是用户很久以前选定的内容 | 0.2.0 |
| ime.commit(text) | 向输入法提交文本 | text 字符串,要提交的文本 | 无 | 0.2.0 |
| ime.request(text, func) | 向云服务器发送请求 | text 字符串,要提交的文本 func 可选,字符串,函数名,该函数负责转换文本(可能阻塞) 该函数接受一个字符串,返回一个字符串 | 无 | 0.2.0 |
| ime.execute(script) | 执行脚本 | script lua脚本 | 布尔值,如果没有错误则为 true | 0.2.0 |
ime.notify (summary, details, icon) | 显示消息 | summary 字符串,details 可选字符串 icon 可选字符串,图标文件路径 | 布尔值,如果成功, true | 0.2.0 |
双拼方案
这里列出了一些常用的双拼方案
--[[
-- 微软拼音方案
q = {"q", {"iu"}}, w = {"w", {"ia", "ua"}}, e = {"-", {"e"}}, r = {"r", {"uan", "er"}}, t = {"t", {"ue"}}, y = {"y", {"uai", "v"}}, u = {"sh", {"u"}}, i = {"ch", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"un"}},
a = {"-", {"a"}}, s = {"s", {"ong", "iong"}}, d = {"d", {"uang", "iang"}}, f = {"f", {"en"}}, g = {"g", {"eng"}}, h = {"h", {"ang"}}, j = {"j", {"an"}}, k = {"k", {"ao"}}, l = {"l", {"ai"}}, [';'] = {"-", {"ing"}},
z = {"z", {"ei"}}, x = {"x", {"ie"}}, c = {"c", {"iao"}}, v = {"zh", {"ui", "ue", "ve"}}, b = {"b", {"ou"}}, n = {"n", {"in"}}, m = {"m", {"ian"}},
-- 搜狗拼音方案 (类似微软拼音方案,不同在于 've' 的位置,微软拼音方案在 V 键,搜狗拼音方案在 T 键。目前没有将 've' 列入合法拼音,全部使用 'ue' ,所以两方案实际相同)
q = {"q", {"iu"}}, w = {"w", {"ia", "ua"}}, e = {"-", {"e"}}, r = {"r", {"uan", "er"}}, t = {"t", {"ue", "ve"}}, y = {"y", {"uai", "v"}}, u = {"sh", {"u"}}, i = {"ch", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"un"}},
a = {"-", {"a"}}, s = {"s", {"ong", "iong"}}, d = {"d", {"uang", "iang"}}, f = {"f", {"en"}}, g = {"g", {"eng"}}, h = {"h", {"ang"}}, j = {"j", {"an"}}, k = {"k", {"ao"}}, l = {"l", {"ai"}}, [';'] = {"-", {"ing"}},
z = {"z", {"ei"}}, x = {"x", {"ie"}}, c = {"c", {"iao"}}, v = {"zh", {"ui"}}, b = {"b", {"ou"}}, n = {"n", {"in"}}, m = {"m", {"ian"}},
-- 自然码方案 (类似搜狗拼音和微软拼音方案,自然码方案中 'ing' 由 ; 移动到了 Y 键, 'v' 由 Y 移到了 V 键)
q = {"q", {"iu"}}, w = {"w", {"ia", "ua"}}, e = {"-", {"e"}}, r = {"r", {"uan", "er"}}, t = {"t", {"ve", "ue"}}, y = {"y", {"uai", "ing"}}, u = {"sh", {"u"}}, i = {"ch", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"un"}},
a = {"-", {"a"}}, s = {"s", {"ong", "iong"}}, d = {"d", {"uang", "iang"}}, f = {"f", {"en"}}, g = {"g", {"eng"}}, h = {"h", {"ang"}}, j = {"j", {"an"}}, k = {"k", {"ao"}}, l = {"l", {"ai"}},
z = {"z", {"ei"}}, x = {"x", {"ie"}}, c = {"c", {"iao"}}, v = {"zh", {"ui", "v"}}, b = {"b", {"ou"}}, n = {"n", {"in"}}, m = {"m", {"ian"}},
-- 拼音加加方案
q = {"q", {"er", "ing"}}, w = {"w", {"ei"}}, e = {"-", {"e"}}, r = {"r", {"en"}}, t = {"t", {"eng"}}, y = {"y", {"iong", "ong"}}, u = {"ch", {"u"}}, i = {"sh", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"ou"}},
a = {"-", {"a"}}, s = {"s", {"ai"}}, d = {"d", {"ao"}}, f = {"f", {"an"}}, g = {"g", {"ang"}}, h = {"h", {"iang", "uang"}}, j = {"j", {"ian"}}, k = {"k", {"iao"}}, l = {"l", {"in"}},
z = {"z", {"un"}}, x = {"x", {"uai", "ue", "ve"}}, c = {"c", {"uan"}}, v = {"zh", {"ui", "v"}}, b = {"b", {"ia", "ua"}}, n = {"n", {"iu"}}, m = {"m", {"ie"}},
-- 智能 ABC 方案
q = {"q", {"ei"}}, w = {"w", {"ian"}}, e = {"-", {"e"}}, r = {"r", {"iu", "er"}}, t = {"t", {"iang", "uang"}}, y = {"y", {"ing"}}, u = {"-", {"u"}}, i = {"-", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"uan"}},
a = {"zh", {"a"}}, s = {"s", {"ong", "iong"}}, d = {"d", {"ia", "ua"}}, f = {"f", {"en"}}, g = {"g", {"eng"}}, h = {"h", {"ang"}}, j = {"j", {"an"}}, k = {"k", {"ao"}}, l = {"l", {"ai"}},
z = {"z", {"iao"}}, x = {"x", {"ie"}}, c = {"c", {"in", "uai"}}, v = {"sh", {"v", "ve", "ue"}}, b = {"b", {"ou"}}, n = {"n", {"un"}}, m = {"m", {"ue", "ve", "ui"}},
-- 紫光拼音方案
q = {"q", {"ao"}}, w = {"w", {"en"}}, e = {"-", {"e"}}, r = {"r", {"an"}}, t = {"t", {"eng"}}, y = {"y", {"in", "uai"}}, u = {"zh", {"u"}}, i = {"sh", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"ai"}},
a = {"-", {"a"}}, s = {"s", {"ang"}}, d = {"d", {"ie"}}, f = {"f", {"ian"}}, g = {"g", {"iang", "uang"}}, h = {"h", {"iong", "ong"}}, j = {"j", {"er", "iu"}}, k = {"k", {"ei"}}, l = {"l", {"uan"}}, [';'] = {"-", {"ing"}},
z = {"z", {"ou"}}, x = {"x", {"ia", "ua"}}, c = {"c", {}}, v = {"-", {"ui", "v"}}, b = {"b", {"iao"}}, n = {"n", {"ue", "ve", "ui"}}, m = {"m", {"un"}},
-- 紫光拼音方案改 ('ing' 由 ; 移动到 C 键)
q = {"q", {"ao"}}, w = {"w", {"en"}}, e = {"-", {"e"}}, r = {"r", {"an"}}, t = {"t", {"eng"}}, y = {"y", {"in", "uai"}}, u = {"zh", {"u"}}, i = {"sh", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"ai"}},
a = {"-", {"a"}}, s = {"s", {"ang"}}, d = {"d", {"ie"}}, f = {"f", {"ian"}}, g = {"g", {"iang", "uang"}}, h = {"h", {"iong", "ong"}}, j = {"j", {"er", "iu"}}, k = {"k", {"ei"}}, l = {"l", {"uan"}},
z = {"z", {"ou"}}, x = {"x", {"ia", "ua"}}, c = {"c", {"ing"}}, v = {"-", {"ui", "v"}}, b = {"b", {"iao"}}, n = {"n", {"ue", "ve", "ui"}}, m = {"m", {"un"}},
--]]
建议增加按Enter直接插入英文字母(不进行转换)。要支持双拼
@oldherl, 不太好,我一直反对把非拼音当作拼音输入…… 这样的话会有一大堆没用的请求发过去,缓存也会存有不少没用的东西。另外,回车键本来就是用来换行的,在输入一篇比较长的文章的时候,目前设计的回车键的行为是比较好的。
我想到了一种其他的解决方案,下个版本中提供~
你好,请问对于ubuntu9.10,配置文件应该放在什么目录呢? $XDG_CONFIG_HOME变量的值为空。。。
@john.37 已在上文中说明。
我没有找到可以设置默认打开选词列表的选项,虽然作者你希望尽量以整句输入的方式来进行中文输入,但是有很多时候不可避免的要输入单字和一个词,所以我希望作者能够在以后的版本中提供一个可以默认打开选词列表的选项,这样就解决了很多人的使用习惯问题。 PS:这个输入法真的是很棒。浙大牛人啊
领略了lua的强大。
如何配置使得搜狗启动时自动进入离线模式?
set_switch{
} 在你的用户配置文件中将上面的default_offline_mode = false个改成true就是离线模式了,如果没有上面一段,自己加上,这段配置都没进行说明,是在全局配置文件中看到了怎么发现配置文件没起作用呢,需要禁止全局配置文件吗? 使用ibus-daemon -rxd重启过了。 修改权限改了 .config下的配置文件也不行,哪里还需要注意。 另外发现在chrome中打一句话的时候,如果直接按回车会出现一串字,比如: 这是直接按回车输入的话 这是直接按回车输入的话 这是直接按回车输入的话 这是直接按回车输入的话 这是直接按回车输入的话 这是直接按回车输入的话
请问输入一串字符后并且按了分号然后发现某一个字符输入错误这时候该如何回退呢?
请问输入一串字符后并且按了分号然后发现某一个字符输入错误这时候该如何回退呢?