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/