Nano на сервере игнорирует определенную окраску синтаксиса

Я использую nano на сервере через ssh; в этой системе nano по умолчанию не включен цвет синтаксиса. Поэтому я скопировал эти файлы наносинтаксиса (в качестве альтернативы см. также @CraigBarnes' answer) на сервере и настроил ~/.nanorc как:

include "~/nanosyntax/syntax-nanorc/php.nanorc"
include "~/nanosyntax/syntax-nanorc/php2.nanorc"
include "~/nanosyntax/syntax-nanorc/sh.nanorc"
include "~/nanosyntax/syntax-nanorc/python.nanorc"
include "~/nanosyntax/syntax-nanorc/html.nanorc"
include "~/nanosyntax/syntax-nanorc/perl.nanorc"
include "~/nanosyntax/syntax-nanorc/ruby.nanorc"
include "~/nanosyntax/syntax-nanorc/js.nanorc"

Вот в чем дело; если я просто позвоню:

nano somefile.php

... раскраска синтаксиса php не выполняется. Если я попытаюсь заставить:

nano --syntax=php somefile.php

... по-прежнему нет окраски синтаксиса (показывается как обычный текст). Однако, если я сделаю:

nano ~/.nanorc

... тогда я делаю подсветку синтаксиса (соответствующую файлу типа .nanorc) ?!

Так что очевидно, что синтаксическая раскраска как таковая работает (т.е. оболочка и nano на это способны) - за исключением того, что для некоторых языков она вроде бы игнорируется, как в данном случае php ?!

Итак, кто-нибудь знает, что происходит - и как я могу получить окраску синтаксиса также для файлов php?

Спасибо,
Удачи!


person sdaau    schedule 20.01.2011    source источник
comment
Вы уверены, что эти файлы находятся в правильных каталогах и доступны для чтения процессу nano?   -  person Noufal Ibrahim    schedule 20.01.2011
comment
Спасибо за комментарий, @Noufal Ibrahim - насколько я вижу, все эти файлы имеют атрибуты rrr, и все должно быть в порядке; к тому же раскраска для nanorc была бы видимо в ~/nanosyntax/syntax-nanorc/nanorc.nanorc - а та, вроде бы, работает?!   -  person sdaau    schedule 20.01.2011
comment
У меня та же проблема, и права доступа ко всем файлам в /usr/shared/nano/ абсолютно одинаковы. В качестве оригинального плаката мой .nanorc тоже работает, но больше ничего не работает. Центос 7.6.   -  person Khom Nazid    schedule 18.07.2019


Ответы (3)


Я только что столкнулся с той же проблемой, и я немного возился с включениями, чтобы найти ошибку. Удивительно, но оказалось, что изменение порядка включения решило проблему:

Это работает:

include "~/.nano/nanorc.nanorc"
include "~/.nano/sh.nanorc"
# more includes...

Это не может выделить файлы sh:

include "~/.nano/sh.nanorc"
include "~/.nano/nanorc.nanorc"
# more includes...

Так что я предполагаю, что это, вероятно, ошибка (в nano 2.2.2, отлично работала в nano 2.1.7)

person user123444555621    schedule 11.07.2011
comment
Спасибо за это, @Pumbaa80! Ваше здоровье! - person sdaau; 13.07.2011

Хм... кажется, на том сервере, который я использовал, произошло обновление; изначально у nano по умолчанию не было окраски синтаксиса, поэтому я использовал свой собственный отдельный ~/.nanorc.

Теперь, однако, на обновленном сервере nano, кажется, работает с окраской синтаксиса php по умолчанию - и у меня есть собственный отдельный ~/.nanorc, похоже, конфликтует; потому что, как только я прокомментировал все записи в привате ~/.nanorc#), окраска синтаксиса php вернулась!!

Кто бэткит?! :)
Ура!


РЕДАКТИРОВАТЬ: Просто добавить пару заметок о нано:

Как отмечалось выше, окраска синтаксиса принудительно включается с помощью переключателя --syntax; чтобы увидеть, какие синтаксисы доступны:

grep 'include' /etc/nanorc |       # find lines containing 'include' in nanorc
  grep -v '^#' |                   # don't process lines that start with '#'
    sed 's_.*/\(.*\)\.nanorc"_\1_' # extract plain filenames

Результат этой команды примерно такой:

nanorc
c
css
debian
gentoo
html
...

Итак, чтобы принудительно раскрасить синтаксис «nanorc», вы используете:

nano --syntax=nanorc /usr/share/nano/nanorc.nanorc

.. или принудительное окрашивание синтаксиса сценария оболочки "bash" (особенно полезно с bashrc):

nano --syntax=sh ~/.bashrc
person sdaau    schedule 20.01.2011
comment
--syntax switch - это то, что мне нужно - person Antoniossss; 01.12.2018

Эти файлы «наносинтаксиса» в Google Code почти так же плохи, как те, которые по умолчанию поставляются с nano.

механизм подсветки nano более прост, чем что-либо с вложенными контекстами (например, GtkSourceView), но вам не нужно соглашаться на дрянную подсветку:

https://github.com/craigbarnes/nanorc

person Craig Barnes    schedule 19.06.2012
comment
Большое спасибо, что поделились, @CraigBarnes - ура! (добавлена ​​ссылка на этот пост и в ОП) - person sdaau; 19.06.2012