沒有其他答案滿足我的需求。所以這可能會幫助其他人。我想Tab
跳轉到行的開頭,如果我在邪惡的正常模式是(基本上是:這意味着無處不在Emacs),但我而是希望組織項目狀態之間的循環,如果我在一個組織模式文件。
當我切換緩衝區時(因爲邪惡在每個鍵的正常狀態下只允許有一個綁定),一種選擇是用單獨的綁定和常量綁定重新綁定。
但更有效的選擇是讓Tab
運行我自己的代碼,該代碼根據當前緩衝區使用的主模式運行所需的功能。因此,如果我處於組織緩衝區中,則此代碼運行org-cycle
,否則它將運行evil-first-non-blank
(轉至行中的第一個非空白字符)。
我這裏使用的技術也可以由通過global-set-key
調用您的自定義函數來代替,誰使用常規的非邪Emacs的人使用。
對於那些誰也不知道的Emacs Lisp,在第一線的「if」語句是真正的動作,之後該行的假動作。所以,如果major-mode
等於org-mode
,我們運行org-cycle
,否則我們在所有其它模式下運行evil-first-non-blank
:
(defun my/tab-jump-or-org-cycle()
"jumps to beginning of line in all modes except org mode, where it cycles"
(interactive)
(if (equal major-mode 'org-mode)
(org-cycle)
(evil-first-non-blank))
)
(define-key evil-normal-state-map (kbd "<tab>") 'my/tab-jump-or-org-cycle)
我越來越發現自己要Emacs的維基求助:http://www.emacswiki.org/emacs/KeyBindingDiscussion在這裏,它顯示你可以添加一個鍵綁定到模式鍵映射,並顯示如何找到該映射。 – drysdam 2011-03-31 12:50:23
Yepp ...我已經看到了一個,但我一直得到'Symbol的值作爲變量是void:LaTeX-mode-map'。嗯... – aL3xa 2011-03-31 13:30:22