Ich habe ein Befehlszeilenprogramm, das JSON und YAML ausgibt. Standardmäßig erkennt es, ob pygments (pymentmize) verfügbar ist und wenn dies der Fall ist, übergebe es die Ausgabe, um eine schöne kolorierte Ausgabe zu erhalten. Auf den meisten Computern, auf denen dieses Programm ausgeführt wird, ist jedoch puments nicht standardmäßig installiert. Aber die meisten Computer haben entweder Emacs oder Vim, tut dies jedoch. Gibt es eine Möglichkeit, einen dieser Editoren dazu zu bringen, einige Texte mithilfe von ANSI-Escape-Sequenzen zu markieren und sie dann wieder auszugeben?Syntax-Highlighter von emacs oder vim für das Befehlszeilenprogramm verwenden?
Antwort
Emacs enthält eine Funktion namens htmlfontify
, die einen formatierten Puffer in HTML konvertiert. Sie können dies im Batch-Modus mit einem kleinen elisp-Skript verwenden, um eine Datei als HTML zu rendern. Zum Beispiel:
emacs -q --batch --file myfile.rb --eval '(progn (require (quote htmlfontify)) (htmlfontify-buffer) (set-buffer-modified-p t) (save-buffer))'
Danke. Sorry hat es nicht klar gemacht, ich brauche es in ANSI-Escape-Sequenzen, da ich an Terminal ausstelle. Mein EmacsLisp-fu ist streng limitiert, aber du hast mir ein paar Tipps gegeben. –
wie Emacs (. Cp ataylor Antwort), Vim einen Puffer mit voller Syntax-Hervorhebung zu HTML machen kann; siehe :help 2html.vim
. Sie könnten wahrscheinlich einen Großteil des Plugins-Codes wiederverwenden, der die Syntax des Puffers durchläuft, und ihn so ändern, dass er in ANSI-Escape-Sequenzen rendert. Sie müssten jedoch die gesamte Rendering-Logik selbst implementieren.
Obwohl es einige Plugins gibt, die Vim als Pager verwenden, glaube ich nicht, dass es einfach möglich ist, Vim zu verwenden, um den Puffer mit ANSI-Escape-Sequenzen auszugeben. Schließlich möchte Vim die Kontrolle über das Terminal behalten und löscht es beim Beenden.
Ich würde vorschlagen, nach einer anderen, dedizierten Lösung außerhalb von Vim zu suchen, obwohl das bedeutet, dass Sie es installieren müssen.
Wenn Sie nicht wollen, @IngoKarkat Beratung und schreiben Standard-Plugin zur Unterstützung ANSI-Escape-Sequenz Sie können meine formatvim Plugin verwenden, es unterstützt Rendering-ANSI-Escape-Sequenz unter Verwendung
Format format csi to /path/to/file
folgen. Anfangs war mein Plugin ein Standard-2HTML-Targeting für verschiedene Formate mit einfachem Hinzufügen eines neuen Formats (ich brauchte ungefähr 30 Minuten, um ANSI-Escape-Sequenz-Unterstützung hinzuzufügen, hauptsächlich die Spezifikation dieser Sequenzen), aber der aktuelle Code ist zu weit gegangen Ähnlichkeiten erwähnen. Es ist bekannt, dass es für große Dateien schneller arbeitet oder wenn Sie eine Instanz von vim verwenden, um eine Anzahl von Dateien zu rendern (d. H. Wenn die Aufwärmphase ("Kompilieren" und Cache-Füllen) durch den Vorteil eines weiteren Laufs maskiert wird).
wie der Editor kann schon die Ansi-Zeug, ziemlich einfach, eine Bildschirmaufnahme des Editors zu machen, nein?
script -qc "stty rows 10000
emacs -nw -visit YOURFILE.YAML -eval '(redisplay t)' -f kill-emacs
resize"
(redisplay nur erforderlich für GNU Emacs FSF)
jetzt die Erfassung aufzuräumen
perl -p0E 's/\A(?s:.*)\e\[27m\r\n
\e\[A\n((?s).*?)
(?:\e\[K\n)+
\e.*\e\[27m\r$(?s:.*)\Z/$1/mx' < typescript
, wenn Sie nicht den Aufnahmevorgang auf dem Bildschirm sichtbar sein sollen, können Sie es wickeln in einem versteckten Terminal mit etwas wie perl's IO: Pty
Netter Trick! Ein wenig Overkill für das Problem zur Hand. Vielen Dank. –
Matthew Wozniski schrieb ein Skript namens vimcat.sh, das dies mit Vim tut. Seine Version ist . Ich habe ein paar Änderungen daran vorgenommen (wenn der Speicher dient, erlaubten die Modifikationen, dass er auf meinem Mac OS X System läuft; ich weiß, dass die Ersetzung von /dev/fd/9
für /proc/self/fd/9
diesen Zweck hatte); siehe mein Kern bei https://gist.github.com/4090959.
Ich glaube, dass beide Versionen des Skripts Probleme mit der Rückkehr zur Standardhintergrundfarbe haben, wenn Vim's Hervorhebung den Hintergrund ändert.
- 1. Vim style Omnicomplete für Emacs?
- 2. Etwas wie Ctrp von Vim für Emacs?
- 3. Colemak Tastaturen mit Emacs oder VIM
- 4. SyntaxHighlighter für android TextView
- 5. Übergabe von Argumenten an das Befehlszeilenprogramm
- 6. like-vim emacs Einbuchtung
- 7. Vim Fuzzy Finder wie für Emacs?
- 8. Vim oder Emacs for Rails Entwicklung ... irgendwelche Vorteile?
- 9. Vim entspricht dem offenen Rechteck von Emacs
- 10. SyntaxHighlighter Wortumbruch?
- 11. Verwenden von Emacs für große große Projekte
- 12. Würden Sie vim/emacs für Anfänger-Programmierer empfehlen?
- 13. Wenn Sie vim oder weniger im GNU-Bildschirm verwenden, hinterlässt das Beenden von vim oder weniger einen bleibenden Eindruck
- 14. Zusätzliche Zeilen mit SyntaxHighlighter nur für Chrome?
- 15. Verwenden von Vim mit hellem oder weißem Hintergrund Farbschema
- 16. Schreibmaschinen-Sounds für Emacs
- 17. Verwenden von AStyle in Vim
- 18. Verwenden von Git mit Emacs
- 19. Automatisches Registrieren von "Befehlen" für ein Befehlszeilenprogramm in Python
- 20. Kann ich Lisp ohne Emacs problemlos verwenden?
- 21. Redmine oder Tracd für das Projektmanagement verwenden?
- 22. Wie lege ich einen Standardpinsel für SyntaxHighlighter fest?
- 23. Kann die Erstellung von Backups zu root von Vim/Emacs
- 24. Drittes Windows-Befehlszeilenprogramm?
- 25. SyntaxHighlighter zeigt die Symbolleiste nicht
- 26. Blogger SyntaxHighlighter funktioniert überhaupt nicht
- 27. Bash Verwendung von vi oder Emacs
- 28. Vim: Entferne das von vim-plugin erstellte Mapping
- 29. Quellcode für das eingebaute Emacs-Paket anzeigen
- 30. Emacs Äquivalent von ct
Übrigens, ich habe gerade über Coderay herausgefunden. Es ist Ruby-basiert und sein Befehlszeilenprogramm ist viel schneller als pygmentize. –
Eine andere Option wäre [GNU Source-highlight] (http://www.gnu.org/software/src-highlite/source-highlight.html). Ich verwende das, um Farben mit [weniger] (http://superuser.com/a/71593/79870) zu erhalten. –
@RandyMorris: Ja, es gibt sogar ein CPAN-Modul dafür (mein Programm ist Perl-basiert). Das einzige Problem ist, dass die Abhängigkeit ziemlich groß ist (das Installieren von source-highlight und seine dev-Bibliotheken, um das CPAN-Modul zu erstellen, zieht ungefähr 100 MB Debian-Pakete ein). –