我正在尋找具有特定功能的代碼編輯器。對於Windows,商用或免費。
所需功能列表:
- 編輯器應為不可知的語言,並且可識別語言的功能應可通過外部定義進行自定義和導入/導出,如果可能的話對用戶透明。例如,如果我創建自定義語言,則可以創建自定義詞法分析器和突出顯示方案等
- 可編寫腳本/可編程:必須支持用於腳本(最好是使用Python)的腳本,可以訪問文本,插入符號和其他內部編輯器功能,因此我可以對編輯功能進行編程並將其綁定到快捷方式。理想情況下,可以使用編輯器的GUI(例如,在側面板中顯示一些列表等)。
- 高度可定制的語法突出顯示功能。即不僅具有基本功能,而且還能夠定義單個字符和序列的樣式(例如正則表達式匹配),因此可以將其設置為不同的 font , size 並顏色匹配。 (請注意重點)。 [*]
- 線可以具有不同的高度。例如,如果我將樣式器設置為5pt字體,並且它與整行匹配-與10pt大小的高度線相比,該行的高度為50%。
- 理想情況下,支持行縮進強>(樹狀編輯)。縮進級別(嵌套級別)必須可以通過腳本訪問(例如生成可運行的Python代碼)。(注意:請不要將縮進與插入空格或製表符混淆!此處的縮進=不可編輯的水平空間)。 OL>
[*]關於要求3的重要說明:即使某些編輯器具有額外的豐富格式設置選項,但常見的問題是這些設置僅適用於所謂的“令牌”(例如關鍵字,函數)。因此請注意,這還不夠。為了更好地理解我的意思,這裡是我需要做的具體示例:
- 僅在字符串內設置西里爾字母的字體/大小;
- 僅為標識符內的數字設置字體/大小;
- 為單詞內的連字符設置字體/大小;等等...
其他標準(重要性不高):
- 它應該快速且響應迅速,沒有太多膨脹;
- 如果積極開發它,那就太好了,這樣至少有可能會添加一些有用的功能;
- 用於交互式功能的高級腳本API,例如讀取鼠標坐標並檢測字符或鼠標光標下的一行;
- 足夠的列表支持(可識別縮進);
- 沒有令人討厭的煩人功能,例如閃爍,動畫,切換焦點,佔用CPU&HDD等。
問題:
請建議一個支持上述所有功能的編輯器。
即使不是開箱即用地支持所有功能,也可以通過腳本/擴展名,請同時提供建議和一些描述。
換句話說,即使編輯器不是完全的代碼編輯器,但可以滿足要求,它也可以使有用
不是一個真實的例子-只是為了說明另一種方法:例如,一個人可以使用Word或Adobe InDesign來編輯代碼,然後生成源並將其傳遞給其他工具。是的,這樣做對這項任務來說有點荒謬,但這只是說-使用InDesignall的突出顯示功能,例如可以通過腳本生成代碼,因此從理論上講這是一個可行的選擇。
到目前為止,我對按功能列出的列表進行了測試:
記事本++
此編輯器可以滿足許多要求,但仍然有很多功能受到限制。超快速,沒有膨脹。它基於Scintilla引擎,該引擎具有許多先進功能,可以通過插件實現某些功能。注意,開發插件基本上需要開發C ++應用程序,這可能是一個挑戰。
所以對我的功能列表:
- 部分地。例如。
- 是的,例如,要為自定義語言定義提示,必須使用UDL,但這是有限的(請參見3)。內置的詞法分析器是硬編碼的,缺少開髮指南。使用PythonScript插件,這很好。
- 部分地。問題是,它不支持基於正則表達式的匹配。
所以我可以定義具有各種字體/大小的樣式器,但是我只能將其應用於詞法分析器(硬編碼)定義的標記,或者通過UDL,但是UDL限於統一的語法標記器(沒有自定義運算符組,沒有用戶定義的匹配序列),因此基本上Scintilla的作曲家支持此功能,但是編輯器不向用戶提供此功能,因此無法使用它 - 否(所有行的高度都相等)。
- 否。 ol>
- 是。
- 是。
- 否。 (因此僅限於等寬字體 ,但作為獎勵,它具有基於正則表達式的亮點顯示)
- 否。
- 否。
- ???。似乎可以通過擴展支持任何語言,但它似乎可以擴展,但是整體情況尚不清楚,其發展似乎很混亂。
- ???。可以進行擴展,但是我找不到清晰的說明或開髮指南。 似乎核心編輯器的許多部分根本無法自定義/不可訪問。
- 否。
- 否。
- 否。
gVIM
很棒的編輯器,超快速且可自定義。但是圖形功能非常有限。
VSCode
我僅測試了一段時間,因此無法確定某些功能。它相當慢,因此在低端計算機上幾乎無法使用