Bagaimana cara mengaktifkan penyorotan sintaks di nano?


184

Bisakah nano melakukan highlight sintaksis seperti gedit dan vim? Bagaimana saya bisa mengaktifkannya? Saya membutuhkan setidaknya sintaks bash dan python highlight.


1
Terima kasih banyak untuk file sintaks di repo git, saya menggunakan ini di semua server saya sekarang ... tetap bekerja dengan baik matey !!!

1
@TheGene Mengomentari dan berterima kasih atas jawabannya. Repo itu dikreditkan padanya, bukan aku, yang mengajukan pertanyaan.
Oxwivi

Jawaban:


175

Editor nano menyediakan penyorotan sintaks untuk beberapa bahasa dan skrip dengan sendirinya. Periksa/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

Tautkan mereka ke file konfigurasi nano pengguna Anda yang hadir ~/.nanorcdengan sesuatu yang mirip dengan baris ini:

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

Sekarang, penyorotan sintaks diaktifkan di nano untuk file apa pun yang Anda tautkan (Anda juga bisa menautkan banyak file)

tangkapan layar dari penyorotan sintaksis

Catatan: Terkadang Anda mungkin mendapatkan segmentation faultsetelah Anda mengedit ~/.nanorcfile Anda . Jika kesalahan seperti itu terjadi, menghapus variabel lingkungan LANG membantu. Anda dapat menghapusnya dengan unset LANGdi terminal. (Solusi diperoleh dari sini )

Ada juga solusi lain jika Anda tidak puas dengan bash highlighting. Salah satu contohnya dapat ditemukan di sini

Anda juga dapat menulis include /usr/share/nano/*ke file ~ / .nanorc untuk memungkinkan semua bahasa disorot jika versi nano Anda mendukungnya.


1
Baris-baris itu tidak difragmentasi /etc/nanorc- apakah pengaturan global ditimpa oleh ~/.nanorc? Bagaimana cara saya menonaktifkan .nanorc?
Oxwivi

13
Oh, tunggu, aku bahkan tidak punya ~/.nanorcfile.
Oxwivi

1
Tunggu, tunggu, bagaimana mungkin pengaturan global dengan semua includebaris tidak mengaktifkan highlight sintaks walaupun saya belum .nanorc?
Oxwivi

9
ls -1 /usr/share/nano/*.nanorc | sed 's/^\//include \//' >> ~/.nanorctambahkan semuanya ke file .nanorc Anda, atau buat jika tidak ada.
Thom Porter

9
include /usr/share/nano/*tidak bekerja
Jarek Jakubowski

74

Ya Anda bisa, namun definisi sintaksis standarnya sangat buruk dan tidak lengkap. Saya mempertahankan definisi yang lebih akurat di sini , bagi siapa saja yang menganggapnya berguna.

Untuk menginstal, jalankan:

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

Tambahkan baris ini ke ~ / .nanorc

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

Tentukan warna yang ingin Anda warnai, dan Anda harus menyesuaikan warna ini dengan preferensi Anda. Fitur yang ALL.nanorcdijelaskan untuk semua file yang belum diklasifikasikan. Ini adalah alat yang Anda butuhkan untuk memulai, bukan produk akhir yang dipoles.


6
Terima kasih telah menyimpan definisi sintaks yang bagus di GitHub.
Rubens Mariuzzo

3
File * .js saya tidak berfungsi ... diedit / etc / nanorc untuk menghapus sintaksis lainnya termasuk sesuai dengan FAQ github.com/nanorc/… . ♥ Nano ♥ nanorc
Carlton

5
Saya baru saja menginstal defs sintaks Anda di Mac OSX. Hanya ada satu hal yang saya perhatikan, yaitu warna hitam dari braket-terbuka dengan python hilang dari latar belakang hitam terminal saya
Tom Busby

5
Sebenarnya ada masalah, beberapa teks berwarna hitam! Jika latar belakang terminal kami hitam, kata-kata ini tidak terlihat!
dukevin

9
Anda memiliki tautan mati
not2qubit

52

Saya menggunakan perintah ini untuk dengan cepat mengaktifkan semua bahasa yang tersedia.

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

Sebagaimana disebutkan dalam jawaban lain, /usr/share/nano/berisi definisi untuk berbagai bahasa.

$ 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

Disebutkan juga, untuk mengaktifkan penyorotan untuk suatu bahasa, Anda menambahkan includedan path ke definisi bahasa yang ingin Anda aktifkan ke ~/.nanorcfile Anda . Jadi, misalnya, untuk mengaktifkan C / C ++ Anda akan menambahkan baris ini.

include /usr/share/nano/c.nanorc

The findperintah pencarian untuk file atau direktori dalam direktori yang ditentukan.

  • The -inameflag mengatakan itu untuk hanya mencari file dengan nama yang berakhir dengan .nanorc.
  • The -execbendera mendefinisikan perintah untuk mengeksekusi pada setiap file yang ditemukan.
  • The {}akan diganti dengan nama file.
  • \;digunakan untuk menandakan akhir dari perintah untuk mengeksekusi ke findperintah.
  • Terakhir, >> ~/.nanorcmenyebabkan output ditambahkan ke ~/.nanorcfile Anda .

tip dan penjelasan yang bagus, terima kasih banyak! ;)
daveoncode

Terima kasih dan sepertinya Anda tidak perlu bendera yang sama. Berikut ini tampaknya berfungsi juga menemukan /usr/share/nano/*.nanorc
Milind

Bahasa Thans sangat banyak!
VIX

7

Ini harus mencakup semua plugin penyorotan sintaks yang disertakan secara default, dan apa pun yang Anda tambahkan ke / usr / share / nano:

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

Atau, edit / etc / nanorc dan lihat apakah Anda dapat menghapus komentar termasuk.

Ini berfungsi jika Anda memiliki versi nano yang menolak untuk menerima wildcard dalam file .nanorc.

Jalankan saja baris ini setiap kali Anda menambahkan konfigurasi warna .nanorc tambahan.



2

Anda dapat menggunakan ini untuk memasukkan semua: (tambahkan ini ke file ~ / nanorc)

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

Selamat coding!


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
Akan sangat membantu jika Anda bisa menjelaskan mengapa ini adalah jawaban yang berguna untuk pengguna yang lebih baru. Apa yang dilakukan perintah? Apa yang berubah? Menyarankan untuk menjalankan baris perintah secara acak tidak membantu.
Kevin Bowen

1

Pengendali sintaks yang paling lengkap dan terkini untuk nano dipertahankan di sini .

Untuk menginstal semua stabilo untuk pengguna Anda jalankan:

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

Solusinya bagus, tapi saya akan menggunakan folder lain untuk git clone. Konten atau /tmpfolder akan dihapus pada setiap sistem mulai dan karena itu Anda tidak pernah dapat menjalankan git pull.
AB

Tag bahasa Anda salah. jstidak bashatau shell-scriptdan saya telah menempatkan tautan di belakang kata here. Dimana masalahnya?
AB

1
@AB tidak peduli jika folder yang hilang karena ketika Anda make installsemua file sintaks akan disalin ke tempat yang aman di mana mereka berada: ~/.nano/syntax.
Pablo A

1

Bagi mereka yang mengalami masalah setelah mengikuti instruksi di atas, periksa juga apakah Anda memiliki definisi ganda . Ini akan menonaktifkan semua penyorotan sintaks untuk semua file . Saya mengalami ini setelah menambahkan nanorc.nanorcfile, dan tidak menyadari bahwa saya ~/.nanorcsudah memiliki bagian yang identik, yaitu:

## 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

Saya menemukan penyorotan sintaks untuk js di sini .

Saya menambahkannya ke file pengguna saya di ~/.nanorc

Namun untuk mendapatkan file yang dapat saya tambahkan, saya harus menyalin terlebih dahulu dari /usr/share/nano/nanorc.nanorcke folder lokal saya terlebih dahulu ~/.nanorc.


0

Saya tidak sengaja menonaktifkan penyorotan menggunakan pintasan keyboard Alt+ Y. Ini dapat dinyalakan kembali dengan cara pintas keyboard yang sama.


0

Saya tahu ini adalah utas lama tetapi semoga solusi saya dapat membantu

edit file di / etc / nanorc

Dari baris 243 Anda dapat menemukan banyak file termasuk. Cukup batalkan komentar yang Anda butuhkan, simpan dan lakukan.

## 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"

Saya tidak yakin jika Anda memperbarui nano apakah perubahan ini akan hilang.


-1

Saya baru saja membuat skrip ini untuk menambahkan warna ke nano: Tapi tentu saja Anda harus memiliki kode warna di / usr / share / nano agar ini berfungsi. Jika ada kesalahan: cukup edit file ~ / .nanorc secara manual dan hapus baris yang memberikan kesalahan.

#!/bin/bash

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.