2013-11-28 53 views
4

我愛vim。它讓我感覺到,我正在直接閱讀文本並將其彎曲到我的意願。Evil Emacs模式:句子動作和其他問題

這就是說。我也喜歡Clojure,Clojurescript,Lisp和組織模式。我真的很想在惡魔模式下喜歡Emacs,在放棄挫敗之前我給了它6-8周的時間。

我在考慮再次嘗試,因爲我已經看到了一些使用ractive.js和組織模式的文字編程的非常好的示例。但是這次我想提前計劃。我的事情,我想知道怎麼做之前,我不管三七二十一隻收取(的話,其實,我有足夠的勇氣再次去了)的簡短列表:

  • 句子和段落運動。我寫了一些代碼,但我寫的更純文本。在編輯時,我通常會在一兩句話結尾處更改/刪除。我無法讓它在邪惡模式下工作,而且iirc甚至有一個標誌,表明這似乎是可能的,但我無法讓它工作。邪惡有沒有想出這個議案呢?如果不是,我怎麼會告訴它這個動議呢?
  • 領導者地圖和元效率圖。直到我發現關於製作地圖的領袖地圖和地圖時,我才真正開始在vim中獲得真棒。沒有什麼太瘋狂 - 我只是創建了一個地圖來打開我的.vimrc文件,並在.vim文件中設置了一些縮寫,這樣我就可以在幾秒鐘內知道我需要它。 emacs中的等效技術可能是什麼?我怎樣才能以vim-ish(即最小和絃)的方式製作地圖?它對我來說是ilisp還是bust?
  • 緩衝區命令。我沒有完全弄清楚有2到4個和絃的邏輯,以便改變你正在處理的文件。我願意學習 - 這不像我真的使用過vim緩衝區,我只是一直打開文件效率低下 - 但是如果找到一個教程不能令我信服的話,我會走上邪惡的道路。

編輯器戰爭是愚蠢的,Emacs有很多有利條件,但我喜歡家裏行!有沒有一種方法可以讓我學會使用emacs操作系統的力量,同時保留這個體面的編輯器?

+1

爲什麼標記vim? – user2987828

回答

6
  • 句子和段落議案:我建議你給不適合你的需求的一些示例命令。我對邪惡的運動鍵感到滿意。
  • 領導者地圖:http://wikemacs.org/index.php/Evil該文檔應該告訴你如何用emacs做事情。定義密鑰如下所示:

    (define-key evil-normal-state-map "q" 'ido-kill-buffer) ; was previously record macro 
    

    另請務必閱讀官方pdf文檔。也看一下鍵盤和絃模式的例子。

  • 緩衝區命令:true,管理緩衝區應該更快。你知道ido模式嗎? 以下是我使用的key-chordido組合:

    (key-chord-define-global "'b" 'ido-switch-buffer) 
    

    和我有next-bufferprevious-buffer類似鑰匙。我認爲這比在終端上查找文件路徑來啓動vim快得多。 此外,我不能沒有子彈,以找到新的文件:https://github.com/bbatsov/projectile

現在你有更精確的問題嗎?

編輯:上去一個句子結束:

所以,邪惡的使用evil-forward-sentence,但肯定的,它並沒有比VIM相同的行爲(見註釋)。 Emacs有forward-sentence但它具有相同的行爲。我找不到具有所需效果的功能。

forward-sentence基於sentence-end變量(請參見M-x ielm),它是定義行尾的正則表達式。所以有可能重新定義它。這裏有一個簡單的例子,需要擴展:

(setq sentence-end "\\. ") ;;point followed by a space 

現在前進句將停在下一點。我們可以重新映射邪惡的)

(define-key evil-normal-state-map ")" 'forward-sentence) 
+0

我會盡量做得更清楚。當我在vim中使用')'鍵時,它將光標移動到當前句子的末尾,無論它是以'。','?'還是'!'結尾的句子。當我在evil-emacs中使用')'時,它將光標移動到行的末尾。這對編輯代碼來說可能很好,但我更經常地編輯純文本,所以我使用「更改到句尾」的語義比我需要的更多。 – tom

+0

好點。我編輯了我的問題以顯示解決方法。 – Ehvince

1

想想有兩個孩子,你會問他們其中之一是另一個優秀的方式嗎?

WRT Emacs,忘記密鑰,忘記vi模仿,從命令開始。 如果一個命令綁定到一個鍵上,Emacs會在以後告訴你,不需要明確地知道它。

Emacs的線索是它的可擴展性。嘗試M-x殺語句RET。不按照你想要的方式行事?配變更請求回到這裏,你將有在一兩分鐘:-)

+3

也許Emacs的可擴展性的最好的部分之一是你*可以*做像vi模仿的事情。 – pandubear

0

來到這麼晚,但得到的答覆是,邪惡使用emacs的句子,這是不一樣的Vim的定義。爲了更貼近Vim的版本,設置sentence-end-double-spacenil

(setf sentence-end-double-space nil) 

Emacs Manual warns

如果你要使用句子之間只是一個空間,你可以設置變量sentence-end-double-spacenil使句子命令停止單個空格。然而,這有一個缺點:沒有辦法區分句子結尾的句號和表示縮寫的句號。爲了方便和可靠的編輯,我們建議您遵循雙空間慣例。

0

我用得到解決,當我編輯的散文這一難題的解決方案是使用:

f. 

F. 

這不是優雅的Vim的句子議案,但它的伎倆。如果您不想讓光標完全停留在最後,也可以使用「t」命令。與其他運動命令一樣,它可以與其他擊鍵組合用於刪除或任何其他您想要執行的操作。