Wie aktiviere ich die Syntaxhervorhebung in Nano?


184

Kann nano Syntaxhervorhebungen wie gedit und vim durchführen? Wie kann ich es aktivieren? Ich brauche mindestens Bash- und Python-Syntax-Highlights.


1
Vielen Dank für die Syntax-Dateien im Git-Repo, ich benutze diese jetzt auf allen meinen Servern ... weiter so Kumpel !!!

1
@TheGene Kommentar und danke für die Antwort. Das Repo wird ihm gutgeschrieben, nicht mir, der die Frage stellt.
Oxwivi

Antworten:


175

Der Nano-Editor bietet Syntax-Hervorhebungen für einige Sprachen und Skripte. Auschecken/usr/share/nano/

nits@nits-excalibur:~$ ls /usr/share/nano/
asm.nanorc     fortran.nanorc   man.nanorc     ocaml.nanorc   ruby.nanorc
awk.nanorc     gentoo.nanorc    mgp.nanorc     patch.nanorc   sh.nanorc
c.nanorc       groff.nanorc     mutt.nanorc    perl.nanorc    tcl.nanorc
cmake.nanorc   html.nanorc      nano-menu.xpm  php.nanorc     tex.nanorc
css.nanorc     java.nanorc      nanorc.nanorc  pov.nanorc     xml.nanorc
debian.nanorc  makefile.nanorc  objc.nanorc    python.nanorc

Verknüpfen Sie sie mit der Nano-Konfigurationsdatei Ihres Benutzers, die ~/.nanorcin der folgenden Zeile angezeigt wird:

nits@nits-excalibur:~$ cat ~/.nanorc
include /usr/share/nano/sh.nanorc

Jetzt ist die Syntaxhervorhebung in Nano für jede verknüpfte Datei aktiviert (Sie können auch mehrere Dateien verknüpfen).

Screenshot der Syntaxhervorhebung

Hinweis: Manchmal erhalten Sie möglicherweise eine, segmentation faultnachdem Sie Ihre ~/.nanorcDatei bearbeitet haben . Wenn ein solcher Fehler auftritt, hilft es, die Umgebungsvariable LANG zu deaktivieren . Sie können es mit unset LANGim Terminal deaktivieren . (Lösung von hier erhalten )

Es gibt auch andere Lösungen, wenn Sie mit Ihrer Bash-Hervorhebung nicht zufrieden sind. Ein Beispiel dafür finden Sie hier

Sie können auch include /usr/share/nano/*in die ~ / .nanorc-Datei schreiben , um alle Sprachen hervorzuheben, wenn Ihre Nano-Version dies unterstützt.


1
Diese Zeilen sind unkommentiert. Werden /etc/nanorcdie globalen Einstellungen von überschrieben ~/.nanorc? Wie deaktiviere ich .nanorc?
Oxwivi

13
Oh warte, ich habe nicht mal eine ~/.nanorcAkte.
Oxwivi

1
Warten Sie, warten Sie, wie kommt es, dass die globale Einstellung mit allen includeZeilen keine Syntaxhervorhebungen aktiviert, obwohl ich dies nicht .nanorcgetan habe ?
Oxwivi

9
ls -1 /usr/share/nano/*.nanorc | sed 's/^\//include \//' >> ~/.nanorcHängen Sie sie alle an Ihre .nanorc-Datei an oder erstellen Sie sie, wenn sie nicht vorhanden ist.
Thom Porter

9
include /usr/share/nano/*funktioniert nicht
Jarek Jakubowski

74

Ja, Sie können, aber die Standard-Syntaxdefinitionen sind ziemlich schlecht und unvollständig. Ich bin eine genauere Reihe von Definitionen beibehalten hier , für jeden, den sie nützlich findet.

Führen Sie zum Installieren Folgendes aus:

git clone https://github.com/nanorc/nanorc.git
cd nanorc
make install

Fügen Sie diese Zeilen zum ~ / .nanorc hinzu

include ~/.nano/syntax/html.nanorc
include ~/.nano/syntax/css.nanorc
include ~/.nano/syntax/php.nanorc
include ~/.nano/syntax/ALL.nanorc

Geben Sie die Farben an, für die Sie Kolorieren möchten, und Sie müssen diese Farben an Ihre Vorlieben anpassen. Das ALL.nanorcbeschreibt Funktionen für alle noch nicht klassifizierten Dateien. Dies sind die Werkzeuge, die Sie brauchen, um loszulegen, nicht das Endprodukt.


6
Vielen Dank, dass Sie diese netten Syntaxdefinitionen in GitHub behalten haben.
Rubens Mariuzzo

3
Mein * Js Dateien funktionieren nicht ... bearbeitet / etc / nanorc andere Syntax pro FAQ enthält als entfernen github.com/nanorc/... . ♥ Nano ♥ nanorc
Carlton

5
Ich habe gerade Ihre Syntax-Defs unter Mac OSX installiert. Es gibt nur eine Sache, die ich beachten möchte: Die schwarze Farbe der offenen Klammer in Python geht vor dem schwarzen Hintergrund meines Terminals verloren
Tom Busby,

5
Eigentlich gibt es ein Problem, ein Teil des farbigen Textes ist schwarz! Wenn unser Terminal-Hintergrund schwarz ist, sind diese Wörter unsichtbar!
dukevin

9
Sie haben eine tote Verbindung
not2qubit

52

Ich habe diesen Befehl verwendet, um schnell alle verfügbaren Sprachen zu aktivieren.

find /usr/share/nano/ -iname "*.nanorc" -exec echo include {} \; >> ~/.nanorc

Wie in anderen Antworten erwähnt, /usr/share/nano/enthält die Definitionen für verschiedene Sprachen.

$ ls /usr/share/nano
asm.nanorc     fortran.nanorc   man-html       ocaml.nanorc   ruby.nanorc
awk.nanorc     gentoo.nanorc    man.nanorc     patch.nanorc   sh.nanorc
cmake.nanorc   groff.nanorc     mgp.nanorc     perl.nanorc    tcl.nanorc
c.nanorc       html.nanorc      mutt.nanorc    php.nanorc     tex.nanorc
css.nanorc     java.nanorc      nanorc.nanorc  pov.nanorc     xml.nanorc
debian.nanorc  makefile.nanorc  objc.nanorc    python.nanorc

Um die Hervorhebung für eine Sprache zu aktivieren, fügen includeSie Ihrer ~/.nanorcDatei auch den Pfad zu der Sprachdefinition hinzu, die Sie aktivieren möchten . Um beispielsweise C / C ++ zu aktivieren, fügen Sie diese Zeile hinzu.

include /usr/share/nano/c.nanorc

Der findBefehl sucht nach Dateien oder Verzeichnissen innerhalb des angegebenen Verzeichnisses.

  • Das -inameFlag weist es an, nur nach Dateien zu suchen, deren Name mit "" endet .nanorc.
  • Die -execFlags definieren einen Befehl, der für jede gefundene Datei ausgeführt werden soll.
  • Das {}wird durch den Dateinamen ersetzt.
  • \;wird verwendet, um das Ende des Befehls zu kennzeichnen, der für den Befehl ausgeführt werden soll find.
  • Zuletzt wird >> ~/.nanorcdie Ausgabe an Ihre ~/.nanorcDatei angehängt .

toller tipp und erklärung, vielen dank mann! ;)
Daveoncode

Vielen Dank und sieht nicht so aus, als ob Sie die Iname-Flagge benötigen. Folgendes scheint auch zu funktionieren: /usr/share/nano/*.nanorc
Milind

Vielen Dank!
VIX

7

Dies sollte alle standardmäßig enthaltenen Syntax-Hervorhebungs-Plugins und alle Plugins enthalten, die Sie zu / usr / share / nano hinzufügen:

find /usr/share/nano -name '*.nanorc' -printf "include %p\n" > ~/.nanorc

Oder bearbeiten Sie / etc / nanorc und prüfen Sie, ob Sie die Includes auskommentieren können.

Dies funktioniert, wenn Sie eine Version von nano haben, die keine Platzhalter in der .nanorc-Datei akzeptiert.

Führen Sie diese Zeile einfach jedes Mal aus, wenn Sie eine zusätzliche .nanorc-Farbkonfiguration hinzufügen.



2

Sie können dies verwenden, um alle einzuschließen: (Fügen Sie dies zu ~ / nanorc hinzu.)

include "/usr/share/nano/*.nanorc"

Viel Spaß beim Codieren!


1
wget -r -nH --cut-dirs=3 --no-parent --reject="index.html*" https://nanosyntax.googlecode.com/svn/trunk/syntax-nanorc/ -P ~/.nano-syntax
for i in `ls --color=never -1 ~/.nano-syntax/*.nanorc` ; do echo "include $i" >> ~/.nanorc ; done

22
Es wäre hilfreich, wenn Sie erklären könnten, warum dies eine nützliche Antwort für neuere Benutzer ist. Was macht der Befehl? Was ändert sich? Es ist nicht hilfreich, zufällig vorzuschlagen, eine Befehlszeile auszuführen.
Kevin Bowen

1

Die vollständigste und aktuelle Syntax hilighters für nano erhalten bleiben hier .

Um alle Textmarker für Ihren Benutzer zu installieren, führen Sie einfach Folgendes aus:

cd /tmp
git clone https://github.com/tech4david/nano-highlight.git
cd nano-highlight/
make install
echo "include ~/.nano/syntax/ALL.nanorc" >> ~/.nanorc

Die Lösung ist gut, aber ich würde einen anderen Ordner für verwenden git clone. Der Inhalt des /tmpOrdners wird bei jedem Systemstart gelöscht und Sie könnten daher niemals einen ausführen git pull.
AB

Ihr Sprachtag ist falsch. jsist nicht bashoder shell-scriptund ich habe den Link hinter das Wort gesetzt here. Wo ist das Problem?
AB

1
@AB es spielt keine Rolle , ob der Ordner da weg ist , wenn Sie make installalle Syntaxdateien in den sicheren Ort kopiert werden , wo sie hingehören: ~/.nano/syntax.
Pablo A

1

Wenn Sie Probleme haben, nachdem Sie die obigen Anweisungen befolgt haben, überprüfen Sie auch, ob Sie doppelte Definitionen haben . Dadurch wird die Syntaxhervorhebung für alle Dateien deaktiviert . Ich bin darauf gestoßen, nachdem ich eine nanorc.nanorcDatei hinzugefügt hatte , und habe nicht bemerkt, dass meine ~/.nanorcbereits einen identischen Abschnitt hatte, dh:

## Here is an example for nanorc files.
##
syntax "nanorc" "\.?nanorc$"
## Possible errors and parameters
icolor brightwhite "^[[:space:]]*((un)?set|include|syntax|i?color).*$"
## Keywords
icolor brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|$
icolor green "^[[:space:]]*(set|unset|include|syntax)\>"
(...)

0

Ich habe hier eine Syntaxhervorhebung für js gefunden .

Ich habe es an meine Benutzerdatei angehängt ~/.nanorc

Um jedoch eine Datei zu erhalten, in die ich anhängen konnte, musste ich sie zuerst /usr/share/nano/nanorc.nanorcin meinen lokalen Ordner als kopieren ~/.nanorc.


0

Ich habe versehentlich die Hervorhebung mit der Tastenkombination Alt+ deaktiviert Y. Es kann mit derselben Tastenkombination wieder eingeschaltet werden.


0

Ich weiß, dass es ein alter Thread ist, aber möglicherweise kann meine Lösung helfen

Bearbeiten Sie die Datei unter / etc / nanorc

In der Zeile 243 finden Sie viele Include-Dateien. Einfach die benötigten auskommentieren, speichern und fertig.

## Nanorc files
include "/usr/share/nano/nanorc.nanorc"

## C/C++
include "/usr/share/nano/c.nanorc"

## Makefiles
include "/usr/share/nano/makefile.nanorc"

## Cascading Style Sheets
include "/usr/share/nano/css.nanorc"

## Debian files
include "/usr/share/nano/debian.nanorc"

## Gentoo files
# include "/usr/share/nano/gentoo.nanorc"

Ich bin mir nicht sicher, ob diese Änderungen verschwunden sind, wenn Sie nano aktualisieren.


-1

Ich habe gerade dieses Skript erstellt, um die Farben zu nano hinzuzufügen: Aber natürlich müssen Sie die Farbcodes in / usr / share / nano haben, damit dies funktioniert. Wenn Fehler auftreten: Bearbeiten Sie die ~ / .nanorc-Datei einfach manuell und entfernen Sie die fehlerhaften Zeilen.

#!/bin/bash

for i in `ls /usr/share/nano`
  do
    echo "include /usr/share/nano/$i" >> ~/.nanorc
  done

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.