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將您的環境變數傳遞給新進程

相關內容