web-dev-qa-db-ja.com

SudoeditによるNano =色なし

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

# 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. Stephen Kittのアドバイス のおかげで、SublimeTextはうまく機能するようになりました。

  2. Xedもうまく機能しているようで、特権が昇格していることを示しています。個人的には思い出したくないのですが、問題はないようです。色があり、必要もありませんSublimeのようなwaitスイッチ。

  3. 私が抱えている問題は、次のようにNanoにあります。

    私が慣れているようにそれを呼び出すと、例えば:

    Sudo nano /etc/nanorc
    

    色はあります。

    しかし、新しいエイリアスで呼び出すと、次のようになります。

    sunano /etc/nanorc
    

    色は一切ありません。

    私が設定したものと同じように見えるので、設定は読み取られたようです。

EDIT1:どうやら、この問題は少なくとも設定ファイルに影響を与えます:

-rw-r--r-- 1 root root 8.6K Apr  8 02:30 /etc/nanorc

他のファイル、例えばBashまたはC++は色付きで、混乱しています。

1

ここでの問題は、sudoeditがファイルを一時ファイルにコピーしてから、エディターで開くことです。ファイルに拡張子が付いている場合、一時ファイルは同じ拡張子で作成され、ファイル名ベースの構文強調表示モードが適切に選択されます(Cファイルの場合は)。 nanorcの場合のように、ファイルに拡張子がない場合、ファイルはランダムな拡張子で作成されます。これにより、ファイル名ベースの構文強調表示モードの選択が混乱し、nanoはファイルを標準のテキストファイルとして扱うことになります。

nanoを再構成してnanorc*ファイルを構成ファイルとして扱うことができれば、目的の動作を復元できます。そうでなければ、これを自動的に処理する方法があるかどうかわかりません。

1
Stephen Kitt

試してみてください

function sunano {
    export Sudo_EDITOR='/usr/local/bin/nano'
    sudoedit -E "$@"
    #        ^^ 
    #         add this
}

-E or --preserve-env環境変数を新しいプロセスに渡します

0
the_velour_fog