
以下は、ルート所有のファイルを編集するための私の個人的なエイリアスです。
# 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
環境変数を新しいプロセスに渡します