題:
與語言無關的代碼編輯器,具有高級格式/突出顯示功能
Mikhail V
2018-10-14 09:35:32 UTC
view on stackexchange narkive permalink

我正在尋找具有特定功能的代碼編輯器。對於Windows,商用或免費。

所需功能列表:

  1. 編輯器應為不可知的語言,並且可識別語言的功能應可通過外部定義進行自定義和導入/導出,如果可能的話對用戶透明。例如,如果我創建自定義語言,則可以創建自定義詞法分析器和突出顯示方案等
  2. 可編寫腳本/可編程:必須支持用於腳本(最好是使用Python)的腳本,可以訪問文本,插入符號和其他內部編輯器功能,因此我可以對編輯功能進行編程並將其綁定到快捷方式。理想情況下,可以使用編輯器的GUI(例如,在側面板中顯示一些列表等)。
  3. 高度可定制的語法突出顯示功能。即不僅具有基本功能,而且還能夠定義單個字符和序列的樣式(例如正則表達式匹配),因此可以將其設置為不同的 font size 並顏色匹配。 (請注意重點)。 [*]
  4. 可以具有不同的高度。例如,如果我將樣式器設置為5pt字體,並且它與整行匹配-與10pt大小的高度線相比,該行的高度為50%。
  5. 理想情況下,支持行縮進強>(樹狀編輯)。縮進級別(嵌套級別)必須可以通過腳本訪問(例如生成可運行的Python代碼)。(注意:請不要將縮進與插入空格或製表符混淆!此處的縮進=不可編輯的水平空間)。
  6. OL>

    [*]關於要求3的重要說明:即使某些編輯器具有額外的豐富格式設置選項,但常見的問題是這些設置僅適用於所謂的“令牌”(例如關鍵字,函數)。因此請注意,這還不夠。為了更好地理解我的意思,這裡是我需要做的具體示例:

  • 僅在字符串內設置西里爾字母的字體/大小;
  • 僅為標識符內的數字設置字體/大小;
  • 為單詞內的連字符設置字體/大小;等等...

其他標準(重要性不高):

  • 它應該快速且響應迅速,沒有太多膨脹;
  • 如果積極開發它,那就太好了,這樣至少有可能會添加一些有用的功能;
  • 用於交互式功能的高級腳本API,例如讀取鼠標坐標並檢測字符或鼠標光標下的一行;
  • 足夠的列表支持(可識別縮進);
  • 沒有令人討厭的煩人功能,例如閃爍,動畫,切換焦點,佔用CPU&HDD等。

問題:

請建議一個支持上述所有功能的編輯器。
即使不是開箱即用地支持所有功能,也可以通過腳本/擴展名,請同時提供建議和一些描述。

換句話說,即使編輯器不是完全的代碼編輯器,但可以滿足要求,它也可以使有用

不是一個真實的例子-只是為了說明另一種方法:例如,一個人可以使用Word或Adobe InDesign來編輯代碼,然後生成源並將其傳遞給其他工具。是的,這樣做對這項任務來說有點荒謬,但這只是說-使用InDesignall的突出顯示功能,例如可以通過腳本生成代碼,因此從理論上講這是一個可行的選擇。


到目前為止,我對按功能列出的列表進行了測試:

記事本++

此編輯器可以滿足許多要求,但仍然有很多功能受到限制。超快速,沒有膨脹。它基於Scintilla引擎,該引擎具有許多先進功能,可以通過插件實現某些功能。注意,開發插件基本上需要開發C ++應用程序,這可能是一個挑戰。

所以對我的功能列表:

  1. 部分地。例如。
  2. 是的,例如,要為自定義語言定義提示,必須使用UDL,但這是有限的(請參見3)。內置的詞法分析器是硬編碼的,缺少開髮指南。使用PythonScript插件,這很好。
  3. 部分地。問題是,它不支持基於正則表達式的匹配。
    所以我可以定義具有各種字體/大小的樣式器,但是我只能將其應用於詞法分析器(硬編碼)定義的標記,或者通過UDL,但是UDL限於統一的語法標記器(沒有自定義運算符組,沒有用戶定義的匹配序列),因此基本上Scintilla的作曲家支持此功能,但是編輯器不向用戶提供此功能,因此無法使用它
  4. 否(所有行的高度都相等)。
  5. 否。
  6. ol>

    gVIM

    很棒的編輯器,超快速且可自定義。但是圖形功能非常有限。

    1. 是。
    2. 是。
    3. 否。 (因此僅限於等寬字體 ,但作為獎勵,它具有基於正則表達式的亮點顯示)
    4. 否。
    5. 否。
    6. VSCode

      我僅測試了一段時間,因此無法確定某些功能。它相當慢,因此在低端計算機上幾乎無法使用

      1. ???。似乎可以通過擴展支持任何語言,但它似乎可以擴展,但是整體情況尚不清楚,其發展似乎很混亂。
      2. ???。可以進行擴展,但是我找不到清晰的說明或開髮指南。 似乎核心編輯器的許多部分根本無法自定義/不可訪問。
      3. 否。
      4. 否。
      5. 否。
我來看看Geany-我知道它可以做到1、2可以通過插件開發來完成,3可以在某種程度上是本機的,否則可以看到2和插件,4可以通過插件/插件開發來實現,我認為5但我不知道做蟒蛇...
與Notepad ++一樣,@ivanivan Geany基於Scintilla。這應該表示4和5為否(除非這將成為Scintilla的功能)。還是我錯過了什麼?
@ivanivan與#1/3相同的情況-定義自定義語言的詞法分析器很可能需要維護編輯器的分支並需要編譯整個項目,對此我並不感到非常興奮。
三 答案:
RProgram
2018-10-24 03:00:29 UTC
view on stackexchange narkive permalink

SynWrite (免費軟件; CudaText 是替代軟件):

  • 與語言無關:檢查。
  • 可編寫腳本/編程:通過Python插件進行檢查。
  • 可定制的語法突出顯示功能:通過內部Lexer編輯器對話框進行檢查。 Dialog還支持片段的不同字體名稱/大小,即“令牌”。
  • 行的高度可以不同:檢查,編輯器將行高調整為該行中“令牌”的大小。
  • 支持行縮進:檢查,Lexer編輯器允許配置基於縮進的折疊。
  • 關於第3條要求的重要說明-不支持,Lexer highlite基於“令牌”。
  • li>
  • 快速響應:檢查。
Chris_Guest
2018-11-26 19:48:44 UTC
view on stackexchange narkive permalink

您可以嘗試Sublime Text,它表現良好,並且確實可以通過python插件等進行自定義。不確定您的第3、4和5點,但也許可以通過插件實現。

Dɑvïd
2019-04-15 19:39:52 UTC
view on stackexchange narkive permalink

可能值得在此Q&A中添加 Textadept。瞥見下面的符號表明這不合適。但我將其發布,因為(a)我對此確實不確定; (b)快速,強大和可擴展,值得一試。它滿足OP條件的方式如下:

  1. 編輯器應與語言無關 | Yes是。
  2. 可編寫腳本/可編程 | Yes是的,但是具有 Lua ,而不是Python。
  3. 高度可定制的語法突出顯示功能| Note認為是這樣,但不確定。請參閱有關“ 詞法分析器語法”的手冊,以了解其是否滿足需要。
  4. 線條可以具有不同的高度 | Note不確定!從來沒有這樣做,但是如果滿足其他條件,則值得進行檢查。 Note同樣,不確定。
  5. ol>

    其他說明

  • 非常積極地維護著響應性開發人員(確實令人印象深刻,實際上)
  • 基於Scintilla的
  • 非常有據可查
  • ,鑑於OP對西里爾語的興趣,這是 Wikipedia.ru的條目。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...