Solusi 1:
Jawaban Larks mungkin yang paling mungkin. Anda mungkin tidak ingin mengubah akun root Anda vi ke vim secara permanen seolah-olah sumber daya Anda rendah vi hampir dijamin untuk selalu berfungsi, saya tidak begitu yakin tentang vim.
Anda mungkin menggunakan (warna)
/usr/bin/vim
di bawah pengguna normal Anda dan
/bin/vi
di bawah sudo atau root. Anda dapat memeriksa dengan menggunakan:
which vi
sekali di bawah pengguna normal Anda dan yang lainnya melalui sudo
sudo which vi
Lakukan a
man which
jika Anda memerlukan detail lebih lanjut
Solusi 2:
Pada sistem RHEL, /bin/vi biasanya merupakan versi minimal dari vim , tanpa dukungan penyorotan sintaks apa pun. /usr/bin/vim adalah editor berfitur lengkap. Sangat mungkin di lingkungan pengguna Anda, vi adalah alias untuk vim . Coba ini:
sudo vim /some/file
Apakah Anda mendapatkan penyorotan sintaks sekarang?
Solusi 3:
vi Anda mungkin adalah /bin/vi dari paket vim-minimal yang tidak mendukung penyorotan sintaks. sudo vi meluncurkan /bin/vi untukmu.
Bash hanya melakukan perluasan alias pada kata pertama di baris perintah Anda, jadi di:
sudo vi
vi tidak diganti dengan vim bahkan jika Anda telah menentukan alias tersebut.
Solusinya mendefinisikan alias lain (untuk pengguna yang memanggil sudo ):
alias sudo='sudo '
Perhatikan spasi setelah sudo kedua .
Menggunakan sudo ini , bash akan melakukan ekspansi alias untuk vi di sudo vi . Di alias bagian dari Bash doc tertulis:
Jika karakter terakhir dari nilai alias adalah kosong, maka kata perintah selanjutnya yang mengikuti alias juga diperiksa untuk perluasan alias.
Setelah Anda memasukkan perintah, Anda dapat menekan Ctrl +Alt +E di bash untuk melihat hasil perluasan.
Kredit:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
Cukup aliasing vi di /root/.bashrc tidak akan berfungsi.
Perlu dicatat juga bahwa vi tidak memiliki alias untuk root pada beberapa distro di /etc/profile.d/vim.sh:
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
Mengubah ini juga tidak akan menyelesaikan masalah.
Solusi 4:
Secara default di 5.4 vi adalah default. Saya lupa versi mana yang dimulai. Ini akan menambahkan alias yang diperlukan untuk Anda:
cat <<_EOF >>/root/.bashrc
alias "vi"="/usr/bin/vim"
_EOF
Solusi 5:
saya menemukan itu di versi vim saya (instal dengan sudo apt-get install vim pada debian 7) syntax on perintah didefinisikan berdasarkan per pengguna di ~/.vimrc . namun secara default penginstalan tidak membuat /root/.vimrc untuk sudo vi untuk memuat. jadi saya hanya menyalin ~/.vimrc ke dalam /root/ dir dan ini berhasil:sudo cp ~/.vimrc /root/