Nano через Sudoedit = Нет цветов

Nano через Sudoedit = Нет цветов

Вот мои личные псевдонимы для редактирования файлов, принадлежащих root:

# CLI superuser nano; compiled; version 2.8.0

function sunano {
    export SUDO_EDITOR='/usr/local/bin/nano'
    sudoedit "$@"
}


# GUI superuser xed; packaged; version 1.2.2

function suxed {
    export SUDO_EDITOR='/usr/bin/xed'
    sudoedit "$@"
}


# GUI superuser sublime-text; packaged; version 3126

function susubl {
    export SUDO_EDITOR='/opt/sublime_text/sublime_text -w'
    sudoedit "$@"
}

Позвольте мне начать с конца:

  1. Sublime Text теперь работает отлично благодаряСовет Стивена Китта.

  2. Xed, похоже, тоже работает хорошо, он показывает, что привилегии повышены, о чем я лично не люблю напоминать, но, похоже, с этим нет никаких проблем, цвета есть, и им даже не нужно ничегождатьпереключатель как у Sublime.

  3. У меня возникла следующая проблема с Nano:

    Если я вызову его так, как я привык, например:

    sudo nano /etc/nanorc
    

    Цвета есть.

    Но если я вызову его с новым псевдонимом:

    sunano /etc/nanorc
    

    Цвета вообще нет.

    Однако конфигурация, похоже, была считана, поскольку она выглядит так же, как я ее настроил.

ПРАВКА1:По-видимому, эта проблема затрагивает как минимум файл конфигурации:

-rw-r--r-- 1 root root 8.6K Apr  8 02:30 /etc/nanorc

Другие файлы, например Bash или C++, цветные, я запутался.

решение1

Проблема здесь в том, что sudoeditкопирует файл во временный файл перед открытием его в редакторе. Если файл имеет расширение, временный файл создается с тем же расширением, и режимы подсветки синтаксиса на основе имени файла выбираются соответствующим образом (напримердля файлов на языке C). Если файл не имеет расширения, как в случае с nanorc, он создается со случайным расширением; это затрудняет выбор режима подсветки синтаксиса на основе имени файла и nanoв конечном итоге приводит к обработке файла как стандартного текстового файла.

Если вы можете перенастроить nanoтак, чтобы рассматривать любой nanorc*файл как файл конфигурации, вы сможете восстановить желаемое поведение. В противном случае я не уверен, что есть способ справиться с этим автоматически.

решение2

пытаться

function sunano {
    export SUDO_EDITOR='/usr/local/bin/nano'
    sudoedit -E "$@"
    #        ^^ 
    #         add this
}

-E or --preserve-envпередает переменные среды новому процессу

Связанный контент