Я нашел этот файл подсветки синтаксиса JavaScript для nano в коде Google, скачал его и включил в мой файл /etc /nanorc:

File: /usr/share/nano/js.nanorc

## all *js files  ( e.g. Firefox user.js, prefs.js )
## Old version
#syntax "jsfiles" "(\.|/|)js$"
#color green "//.*$" start="\/\*" end="\*\/"
#color blue "'(\\.|[^'])*'"
#color red ""(\\.|[^\"])*""
#color brightgreen "\<(true)\>"
#color brightred "\<(false)\>" "http\:\/\/.*$"
#color brightmagenta "[0-9](\\.|[^\"])*)"
## New updated taken from http://wiki.linuxhelp.net/index.php/Nano_Syntax_Highlighting
syntax "JavaScript" "\.(js)$"
## Default
color white "^.+$"
## Decimal, octal and hexadecimal numbers
color yellow "\<[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\>"
## Floating point number with at least one digit before decimal point
color yellow "\<[-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?"
color yellow "\<[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?"
## Keywords
color green "\<(break|case|catch|continue|default|delete|do|else|finally)\>"
color green "\<(for|function|if|in|instanceof|new|null|return|switch)\>"
color green "\<(switch|this|throw|try|typeof|undefined|var|void|while|with)\>"
## Type specifiers
color red "\<(Array|Boolean|Date|Enumerator|Error|Function|Math)\>"
color red "\<(Number|Object|RegExp|String)\>"
color red "\<(true|false)\>"
## String
color brightyellow "L?\"(\\"|[^"])*\""
color brightyellow "L?'(\'|[^'])*'"
## Escapes
color red "\\[0-7][0-7]?[0-7]?|\\x[0-9a-fA-F]+|\\[bfnrt'\"\?\\]"
## Comments
color magenta start="/\*" end="\*/"
color magenta "//.*$"

Однако теперь, когда я открываю какой-либо файл с помощью nano, мне сообщают об ошибках. Эта строка печатается для каждой строки в файле с регулярным выражением:

Error in /usr/share/nano/js.nanorc on line 11: Regex strings must begin and end with a " character

Я все еще могу открыть любой файл, и подсветка синтаксиса все еще работает для других типов файлов, но нет подсветки javascript.

Кто-нибудь может помочь мне здесь? Я очень плохо знаком с nano (и вообще с linux), но не вижу проблем ни с одним из этих регулярных выражений ... все они начинаются и заканчиваются на "s".

2 ответа2

0

В общем, вы могли бы сделать маршрут "разделяй и властвуй". Сделайте копию файла. Удали половину, попробуй конфиг. Если в синтаксисе есть ошибка, она находится в половине, которая находится в файле - повторите (удалите половину). Если нет, то это половина, которую вы удалили. Используйте половину, которую вы разделили, и удаляйте половину из нее, пока не доберетесь до одной линии, которая плоха.

Я не знаю формат файла, но я думаю, что строка

#color red ""(\\.|[^\"])*""

Он начинается сразу с «, затем с», закрывая его, а затем с помощью регулярного выражения. Я предполагаю, что вам нужно избегать внутренних кавычек:

#color red "\"(\\.|[^\"])*\""
0

Пограничный, но возможный сценарий:

При использовании Cygwin в Windows убедитесь, что строки заканчиваются в стиле Unix (\n), а не в стиле Windows (\r\n). Я столкнулся именно с этой проблемой, и это единственная ссылка, которую я нашел даже на сайтах StackExchange. Это может быть крайний случай, но это приводит к этой точной проблеме

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .