我最近切换到了在Dvorak布局上打字。但过了一段时间后,我决定只在Emacs中使用Dvorak -这样我的系统上的所有其他键绑定就不会被破坏。
因此,我从StackOverflow.com上的一些问题中提取了以下内容:
(defadvice switch-to-buffer (after activate-input-method activate)
(activate-input-method "english-dvorak"))它将所有新缓冲区中的输入法切换到dvorak。它运行良好,但有一个问题-暂存缓冲区保持其默认的英语布局,所有选择“对话”(C-x C-f)的文件也保留它-这有点恼人,因为它需要我在一分钟内切换几次“输入心态”。
有没有办法在emacs中全局启用dvorak布局-并且仍然保留默认快捷键(就像默认英语中的C-x )?
编辑:
我的问题的答案是:
(defadvice switch-to-buffer (after activate-input-method activate)
(activate-input-method "english-dvorak"))
(add-hook 'minibuffer-setup-hook (lambda () (set-input-method "english-dvorak")))发布于 2012-04-02 09:57:02
你可以尝试这样的代码(保证100%未测试代码):
(define-minor-mode dvorak-minor-mode "Use Dvorak IM." :lighter nil
(if dvorak-minor-mode (activate-input-method "english-dvorak")))
(define-global-minor-mode dvorak-mode dvorak-minor-mode dvorak-minor-mode)发布于 2020-06-05 21:13:16
我使用Emacs版本28和emacsclient。为了让Emacs服务器成功启动,我不得不对@Stefan的回答进行了一些调整--下面是我用来在我所有的缓冲区中启用dvorak的完整代码:
(define-minor-mode dvorak-minor-mode "Use english-dvorak input method." :lighter nil
(if (and dvorak-minor-mode (not (minibufferp)))
(activate-input-method "english-dvorak")))
(define-global-minor-mode global-dvorak-mode dvorak-minor-mode dvorak-minor-mode)
(global-dvorak-mode t)
(add-hook 'minibuffer-setup-hook (lambda () (set-input-method "english-dvorak")))https://stackoverflow.com/questions/9967601
复制相似问题