2012-06-05 35 views
5

我一直是一個狂熱的Vim用戶,最近對它的工作原理感興趣。關於如何創建類Vim編輯器的任何教程?

有誰知道是否有一個教程,轉換爲普通文本編輯器具有Vi/m功能的基礎知識嗎?編程語言並不重要;我是一位經驗豐富的程序員。

我已經找到了下列資源至今:

+4

聽起來像你在你的問題中回答你自己的問題給我。 ;) – Almo

+0

@Almo,=)。是的,我花了很多時間試圖找到現有的簡單實現。希望其他人可以拿出比我更好的教程。 ;-) – sivabudh

回答

1

作爲一個有經驗的vi用戶,你就會知道,有主要兩個關鍵方面,使其與其他(vis UAL)編輯: - 輸入模式Esc鍵的他們 之間切換的常用方法 - 情境鍵盤映射,多個按鍵建立一個命令

我已經看到了一些人加一個子集的Vi鍵盤映射到現有的編輯器,雖然可以合理地映射某些東西,但獲得仿真可能需要對現有編輯器的鍵盤處理進行相當廣泛的替換。

鍵盤映射當然是相當有據可查的,所以它不應該太難實現。

接下來就是執行命令模式。這取決於你正在修改哪個編輯器來實現這一點,但是我會想象將焦點轉移到底部的永久性部件/控件。一旦焦點集中在該控件上,您可以輕鬆處理輸入,然後在按下返回時分析和處理該命令。

命令模式的基本語法是從ed/sed編輯器繼承的,因此您可以在其上查找實現(或論文)。

總而言之,獲得一個看起來很像vi的表面實現並不是一項巨大的工作。但做得很好是另一回事。我建議你認真考慮只使用優秀的Vim(http://www.vim.org/)。

5

我覺得首先你應該知道,VI/VIM實際上是兩個部分。一個是名爲vi的可視編輯器,另一個是名爲ed的單線編輯器。

其實vi被稱爲visual編輯器,因爲它是建立在ed(編輯器)之上的。它是ex模式的視覺部分,您可以在其中查看和編輯文字,這就是爲什麼它從視覺得到名稱vi

ex模式實際上是編輯器ed的複製/表示。只需在終端上啓動ed並使用您的默認Vi ex命令。 目視,取代插入模式使用vi。例如有幾個命令是實際做同樣的事情,例如:

:100 // Go to line 100, ex mode (ed) 
100G // Go to line 100, normal mode(vi) 

:.,5d // Delete 5 lines, ex mode (ed) 
5dd // Delete 5 lines, normal mode (vi) 

等等...

有關更多的信息,我建議從O讀的優秀著作Learning the vi and Vim editors」 Reilly:

alt text

+0

哇,有趣的事實關於'vi'和'ed'。感謝您的建議。我相信我有這本書。將不得不檢查我的書架。 =)會給它一個準備好讓自己更多地瞭解Vi。 – sivabudh

相關問題