我一直是一個狂熱的Vim用戶,最近對它的工作原理感興趣。關於如何創建類Vim編輯器的任何教程?
有誰知道是否有一個教程,轉換爲普通文本編輯器具有Vi/m功能的基礎知識嗎?編程語言並不重要;我是一位經驗豐富的程序員。
我已經找到了下列資源至今:
- The Craft of Text Editing
- Implementation of Vi Editor with NCURSES
- Vi Editor implemented in Python
- Ruvi: Vi(m) clone in Ruby
我一直是一個狂熱的Vim用戶,最近對它的工作原理感興趣。關於如何創建類Vim編輯器的任何教程?
有誰知道是否有一個教程,轉換爲普通文本編輯器具有Vi/m功能的基礎知識嗎?編程語言並不重要;我是一位經驗豐富的程序員。
我已經找到了下列資源至今:
作爲一個有經驗的vi用戶,你就會知道,有主要兩個關鍵方面,使其與其他(vis UAL)編輯: - 輸入模式Esc鍵和:的他們 之間切換的常用方法 - 情境鍵盤映射,多個按鍵建立一個命令
我已經看到了一些人加一個子集的Vi鍵盤映射到現有的編輯器,雖然可以合理地映射某些東西,但獲得仿真可能需要對現有編輯器的鍵盤處理進行相當廣泛的替換。
鍵盤映射當然是相當有據可查的,所以它不應該太難實現。
接下來就是執行命令模式。這取決於你正在修改哪個編輯器來實現這一點,但是我會想象將焦點轉移到底部的永久性部件/控件。一旦焦點集中在該控件上,您可以輕鬆處理輸入,然後在按下返回時分析和處理該命令。
命令模式的基本語法是從ed/sed編輯器繼承的,因此您可以在其上查找實現(或論文)。
總而言之,獲得一個看起來很像vi的表面實現並不是一項巨大的工作。但做得很好是另一回事。我建議你認真考慮只使用優秀的Vim(http://www.vim.org/)。
作爲一點靈感,您可以看看各種IDE中Vi仿真的實現。
我覺得首先你應該知道,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:
哇,有趣的事實關於'vi'和'ed'。感謝您的建議。我相信我有這本書。將不得不檢查我的書架。 =)會給它一個準備好讓自己更多地瞭解Vi。 – sivabudh
聽起來像你在你的問題中回答你自己的問題給我。 ;) – Almo
@Almo,=)。是的,我花了很多時間試圖找到現有的簡單實現。希望其他人可以拿出比我更好的教程。 ;-) – sivabudh