是否可以在Emacs中交替使用两种输入方法?

Rog*_*ach 4 emacs

我知道有"C- \"来切换输入法,但是只允许一个额外的输入法 - 例如,默认情况下我有英文qwerty布局,我可以在它和dvorak之间交替.

但有没有办法在两种其他语言之间进行交替同样轻松?例如,如果我想替换english-dvorak和我的母语布局?

Ale*_*xey 6

要快速切换2种或更多替代输入法,我已将以下代码添加到我的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)
Run Code Online (Sandbox Code Playgroud)

因此,切换到我使用的俄语,中文或德语IME C-\,C-|C-M-|据此.然后切换回英语我使用与当前IME相同的键(即如果我有中文IME激活,我将切换回使用C-|).

配置使用alternative-input-methods变量.它是输入方法名称和键绑定的汇总列表.

注意!如果您通过调用M-x toggle-input-method或按激活IME C-u C-\,按下C-\将根据alternative-input-methods变量切换到输入方法(在默认配置中,Emacs会记住新的IME并将其用于C-\).

  • 优秀的答案,спасибо:-) (2认同)

leg*_*cia 3

如果我键入C-u C-\以选择一种输入法,然后再次选择另一种输入法,我发现后续的每次调用都使用前一种输入法作为默认输入,因此切换到另一种输入法归结为C-u C-\ RET