Nano から Sudoedit 経由 = 色なし

Nano から Sudoedit 経由 = 色なし

以下は、ルート所有のファイルを編集するための私の個人的なエイリアスです。

# 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環境変数を新しいプロセスに渡します

関連情報