ubuntuのvisudo のエディタがnano になってしまう。visudo って書いてあるのにnanoが起動する。viXXXってコマンドでnano起動するの何なの。と思ったりした。
環境変数EDITORで何とかなることもあるんだけど,毎回やるのも面倒だしアップデートかかる度に書き戻されることがある気がする.
2023-03-16 更新(システム全体)
システム全体でnanoエディタを捨ててVimにします。
export SYSTEMD_EDITOR=vim
select-editor すら動かなくなりました。
nano の何が良いのか全く理解できない。export EDITOR も無視するし、update-alternativeも無視するの、本当にどうなってるんだろう。
`sudo -e` でまたnanoになる場合は、`sudo visudo` で `Defaults:%sudo env_keep += "EDITOR"` も合わせてどうぞ
ちゃんと解決する select-editor コマンド(ユーザー空間)
2022-09-26 現在 ubuntu 22.04 で調べたところ、次のコマンドで改善が可能です
/usr/bin/select-editor
nanoを推されますが、どう考えてもvim のほうが良いので。viを選びます。
Select an editor. To change later, run 'select-editor'. 1. /usr/bin/vim.nox 2. /bin/nano <---- easiest 3. /usr/bin/vim.basic 4. /usr/bin/vim.tiny 5. /bin/ed Choose 1-5 [2]: 1
この場合、 ~/.selected_editorに次のような設定が作られます。
# Generated by /usr/bin/select-editor SELECTED_EDITOR="/usr/bin/vim.nox"
また、EDITOR環境変数をつかっているプログラムも多いので設定しておきます。
echo export EDITOR=vim >> ~/.bashrc
標準のコマンドエディタは alternativesという機構で管理されている.altenativesは同様のソフトウェアがあるとき、どれを使うかを事前決定しておく機構。たとえばJavaで使われるSun Java のJDKにするか Open Java のJDKにするか。とか。
sudo update-alternatives --config editor #alternativesでeditorを更新するコマンド
じっさいやってみた
エディタを変更してみると複数の候補があるのが分かる.
takuya@atom:~$ sudo update-alternatives --config editor There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path 優 Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press enter to keep the current choice[*], or type selection number: 3
通常vimに設定。 nano の良さが正直分からない
設定が変わったことを確認
takuya@atom:~$ sudo update-alternatives --config editor There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path 優 Status ------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode * 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press enter to keep the current choice[*], or type selection number:
そのほかの解決方法
visudo する際に,環境変数EDITORを指定して起動する
EDITOR=/usr/bin/vi visudo
または
環境変数EDITORを設定して起動する
export EDITOR=/usr/bin/vim;sudo visudo
但し、環境変数を使う方法は,alternativesが動いてるときはうまく出来なかった
alternativesは実際にはsynlink
alternativesは/etc/alternativesにあるショートカットで管理されている.詳しくはそのうちエントリに書きます.
2022-09-26 追記
ubuntu がupdate-alternativesを無視するので、/usr/bin/select-editor を追記しました。
2023-10-10
SELECTED_EDITOR変数について言及を追加。