
Вот мои личные псевдонимы для редактирования файлов, принадлежащих 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 "$@"
}
Позвольте мне начать с конца:
Sublime Text теперь работает отлично благодаряСовет Стивена Китта.
Xed, похоже, тоже работает хорошо, он показывает, что привилегии повышены, о чем я лично не люблю напоминать, но, похоже, с этим нет никаких проблем, цвета есть, и им даже не нужно ничегождатьпереключатель как у Sublime.
У меня возникла следующая проблема с 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
передает переменные среды новому процессу