
以下是我用於編輯 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
將您的環境變數傳遞給新進程