ここからここまでぜーんぶ先頭に「//」を入れてコメントアウトしたーい!みたいなときに、vimの短形ビジュアルモード便利!と思ったけど、viじゃ使えないのか・・・vim限定なのか・・・・つーかもうシンボリックリンクになってて、この2つ完全に同じだと思ってた・・・ということがあったのでメモっておく。
一般ユーザとrootユーザでviの中身は違う
そもそも私の中の理解は「viがもっと改良されたのがvim。でも最近はviって打っても、実体としてはvim使ってるので、両方同じものだと思ってよい」くらいだった。
なんだけど、viとvimでなんか挙動違う!と思ったら、一般ユーザとrootユーザで、viの中身が違うんだね。
こっちが一般ユーザで「viのフルパス教えろよー」としたとき。「viはvimのエイリアス(別名)だよ、フルパスは/usr/bin/vimだよ」って返事が返ってきてる。
$ which vi alias vi='vim' /usr/bin/vim
そしてこっちがrootユーザで同じこと聞いたとき。「viのフルパスは/bin/viだよ」って返ってきてる。
# which vi /bin/vi
えー、なんでrootは生のままのvi使わされてるの・・・?
なぜrootだけ生のままのviを使わされているのか?
色々調べて行ったら、/etc/profile.d/vim.shでわざわざUIDが200以上のユーザだけに限定して「alias vi=vim」してて、そのvim.shを/etc/bashrcの中で読み込んでる。(つまりrootユーザのUIDは0なので、viにエイリアスが設定されない)
if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then [ -x /usr/bin/id ] || return ID=`/usr/bin/id -u` [ -n "$ID" -a "$ID" -le 200 ] && return # for bash and zsh, only if no alias is already set alias vi >/dev/null 2>&1 || alias vi=vim fi
えー、なんでー、なんでrootユーザはvim使えないの・・・vim-enhancedパッケージのあるなしとか関係あるの?
別に自分で/root/.bashrhで「alias vi='vim'」とかしてもいいんだけど、わざわざこうしてある理由が分からないまま、設定しちゃうのも嫌だしなー。