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将您的环境变量传递给新进程

相关内容