我知道有“C- \”来切换输入法,但是只允许一个额外的输入法 - 例如,默认情况下我有英文qwerty布局,我可以在它和dvorak之间交替。
但是有没有办法在两种其他语言之间进行交替同样轻松?例如,如果我想替换english-dvorak和我的母语布局?
答案 0 :(得分:6)
要快速切换两种或更多替代输入法,我已将以下代码添加到init.el
:
;; Input method and key binding configuration.
(setq alternative-input-methods
'(("russian-computer" . [?\C-\\])
("chinese-py-punct" . [?\C-|])
("german-postfix" . [?\C-\M-|])))
(setq default-input-method
(caar alternative-input-methods))
(defun toggle-alternative-input-method (method &optional arg interactive)
(if arg
(toggle-input-method arg interactive)
(let ((previous-input-method current-input-method))
(when current-input-method
(deactivate-input-method))
(unless (and previous-input-method
(string= previous-input-method method))
(activate-input-method method)))))
(defun reload-alternative-input-methods ()
(dolist (config alternative-input-methods)
(let ((method (car config)))
(global-set-key (cdr config)
`(lambda (&optional arg interactive)
,(concat "Behaves similar to `toggle-input-method', but uses \""
method "\" instead of `default-input-method'")
(interactive "P\np")
(toggle-alternative-input-method ,method arg interactive))))))
(reload-alternative-input-methods)
因此,为了切换到俄语,中文或德语IME,我相应地使用 C - \ , C- | 和 C-M- | 。要切换回英语,我使用与当前IME相同的密钥(即如果我有中文IME激活,我将使用 C- | 切换回来。)
配置使用alternative-input-methods
变量。它是输入法名称和键绑定的汇总列表。
注意!如果通过调用M-x toggle-input-method
或 Cu C - \ 激活IME,请按 C - \ 将根据alternative-input-methods
变量切换到输入方法(在默认配置中,Emacs会记住新的IME并将其用于 C - \ )。
答案 1 :(得分:3)
如果我键入C-u C-\
来选择一个输入法,再次选择另一个输入法,我发现每个后续调用都使用前一个输入法作为默认输入,因此切换到另一个输入法归结为C-u C-\ RET
。