Ich suche einen Code-Editor mit bestimmten Funktionen. Für Windows, kommerziell oder kostenlos.
Liste der erforderlichen Funktionen:
- Der Editor sollte sprachunabhängig sein, und sprachabhängige Funktionen sollten anpassbar und über externe Definitionen importierbar/exportierbar sein, möglichst transparent für den Benutzer. Wenn ich also beispielsweise meine benutzerdefinierte Sprache erstelle, kann ich benutzerdefinierte Lexer- und Hervorhebungsschemata usw. erstellen. Die Möglichkeit, erweiterte Funktionen für jede Sprache zu verwenden oder zu erstellen (z. B. Grammatikprüfer, Variablen-/Funktionslisten usw.), wäre natürlich großartig.
- Skriptfähig/programmierbar : Muss Unterstützung für Skripterstellung (idealerweise mit Python) mit Zugriff auf Text, Caret und andere interne Editorfunktionen haben, damit ich Bearbeitungsfunktionen programmieren und sie an Verknüpfungen binden kann. Idealerweise mit der Möglichkeit, die GUI des Editors zu verwenden (z. B. eine Liste in einem Seitenbereich anzuzeigen usw.).
- Hochgradig anpassbare Funktionen zur Syntaxhervorhebung. Dh nicht nur grundlegende Dinge, sondern mit der Möglichkeit, das Styling für einzelne Zeichen und Sequenzen (zB Regex-Matching) zu definieren und so auf unterschiedliche Schriftart , Größe und Farbe für den Match einzustellen. (Bitte beachten Sie die Betonung). [*]
- Linien können unterschiedlich hoch sein . Wenn ich zum Beispiel den Styler auf 5pt-Schriftart einstelle und er mit der gesamten Linie übereinstimmt, hat die Linie 50% Höhe im Vergleich zu den Höhenlinien mit 10pt-Größe.
- Idealerweise mit Unterstützung für Zeileneinzüge (baumartige Bearbeitung). Die Einrückungsebene (Verschachtelungsebene) muss per Scripting zugänglich sein (z. B. um lauffähigen Python-Code zu generieren). ( Hinweis : Bitte verwechseln Sie Einrückungen nicht mit dem Einfügen von Leerzeichen oder Tabulatorzeichen! Einrückungen hier = nicht bearbeitbarer horizontaler Abstand).
[*] Wichtiger Hinweis zu Anforderung Nr. 3: Auch wenn einige Editoren besonders reichhaltige Formatierungsoptionen haben, besteht das allgemeine Problem darin, dass diese nur auf die sogenannten 'Tokens' (zB Schlüsselwörter, Funktionen) anwendbar sind. Beachten Sie also, dass dies nicht ausreicht. Um besser zu verstehen, was ich meine, hier sind konkrete Beispiele, was ich tun muss:
- setze die Schriftart/Größe nur für kyrillische Buchstaben innerhalb von Strings;
- Legen Sie die Schriftart/Größe nur für Zahlen innerhalb von Bezeichnern fest;
- Legen Sie die Schriftart/Größe für den Bindestrich innerhalb eines Wortes fest; etc...
Weitere Kriterien (weniger wichtig):
- es sollte schnell und reaktionsschnell sein, ohne viel Aufblähung;
- Es wäre großartig, wenn es aktiv weiterentwickelt würde, damit zumindest die Möglichkeit besteht, dass einige nützliche Funktionen hinzugefügt werden.
- erweiterte Skript-API für interaktive Funktionen, zum Beispiel die Fähigkeit, Mauskoordinaten zu lesen und das Zeichen oder die Linie unter dem Mauszeiger zu erkennen;
- angemessene Tabellierungsunterstützung (Einrückungs-bewusst);
- keine aufdringlichen lästigen Funktionen wie etwas Blinken, Animationen, Fokuswechsel, CPU & HDD in Beschlag nehmen usw.
Frage:
Bitte schlagen Sie einen Editor vor, der alle oben genannten Funktionen unterstützt.
Auch wenn nicht alles standardmäßig unterstützt wird, aber per Scripting/Erweiterung möglich ist, geben Sie bitte auch einen Vorschlag und einige Beschreibungen.
Mit anderen Worten, auch wenn der Editor nicht gerade ein Code-Editor ist, aber die Anforderungen erfüllen kann, kann er auch eine nützliche Antwort geben.
Nicht als echtes Beispiel - sondern nur um einen alternativen Ansatz zu veranschaulichen: So kann man zB mit Word oder Adobe InDesign den Code editieren, dann Sourcen generieren und an andere Tools weitergeben. Ja, das wäre für diese Aufgabe etwas absurd, aber nur um zu sagen - zB sind bei InDesign alle Hervorhebungsfunktionen und zB die Codegenerierung über Skripte möglich, also ist es theoretisch eine praktikable Option.
Was ich bisher mit Listen nach Feature getestet habe:
Notepad++
Dieser Editor erfüllt viele Anforderungen, aber dennoch sind viele Funktionen eingeschränkt. Superschnell, kein Aufblähen. Es basiert auf der Scintilla-Engine, die ihrer Zeit viele fortschrittliche Funktionen voraus hat. Über Plug-Ins ist einiges möglich. Als Anmerkung, die Entwicklung eines Plugins erfordert grundsätzlich die Entwicklung einer C++-Anwendung, was eine ziemliche Herausforderung sein kann.
Also zu meiner Featureliste:
- Teilweise. Um zB Hervorhebungen für eine benutzerdefinierte Sprache zu definieren, muss UDL verwendet werden, aber es ist begrenzt (siehe 3.). Eingebaute Lexer sind hartcodiert, Entwicklerhandbücher fehlen.
- Ja - zB mit dem PythonScript-Plugin, und es ist gut.
- Teilweise. Das Problem ist, dass Regex-basierte Übereinstimmungen nicht unterstützt werden.
Daher kann ich Styler mit verschiedenen Schriftarten/Größen definieren, aber ich kann sie nur auf die Token anwenden, die vom Lexer (fest codiert) oder über UDL definiert werden, aber UDL ist auf den einheitlichen Grammatik-Tokenizer beschränkt (keine benutzerdefinierten Operatorgruppen , keine benutzerdefinierten Match-Sequenzen). Im Grunde unterstützt der Composer von Scintilla dies, aber der Editor stellt dies dem Benutzer nicht zur Verfügung, also keine Möglichkeit, es direkt zu verwenden.
- Nein (alle Zeilen sind gleich hoch).
- Nein.
gVIM
Toller Editor, super schnell und anpassbar. Aber ziemlich begrenzt in den grafischen Funktionen.
- Ja.
- Ja.
- Nein. (hiermit nur auf Monospaced-Schriftarten beschränkt , aber als netter Bonus hat es Regex-basierte Hervorhebungen)
- Nein.
- Nein.
VSCode
Ich habe es erst seit einiger Zeit getestet, daher kann ich mir bei einigen Funktionen nicht sicher sein. Es ist ziemlich langsam, also wird es auf einem Low-End-Rechner kaum nutzbar sein.
- ???. Scheint erweiterbar zu sein, um jede Sprache per Erweiterung zu unterstützen, aber das Gesamtbild ist unklar und seine Entwicklung scheint ziemlich chaotisch zu sein.
- ???. Erweiterungen sind möglich, aber eine klare Anleitung oder einen Dev-Guide konnte ich nicht entdecken. Außerdem scheint es, dass viele Teile des Kerneditors überhaupt nicht anpassbar/zugänglich sind.
- Nein.
- Nein.
- Nein.
ivwan
Michail V
Michail V