Saya tidak mengerti bagaimana membolehkan penyorotan sintaks pada file yang saya edit melalui vi saat menggunakan sudo. Ketika saya sudo vi <filename>
terminal hanya hitam & putih dari pengaturan terminal saya. In vi jika saya memasukkan :syntax on
perubahan.
Ketika saya vi <filename>
semua sintaks berwarna dengan benar. Menggunakan RHEL 5.4, id yang relevan:
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;
33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;
32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;
32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;
31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;
31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;
35:*.png=01;35:*.tif=01;35:
SHELL=/bin/bash
TERM=xterm-color
vi
tidak mendukung warna, jadi apa pun yang menunjukkan warna sedang berjalanvim
atau serupa.Jawaban:
Larks jawaban mungkin yang paling mungkin. Anda mungkin tidak ingin mengubah akun root Anda vi ke vim secara permanen karena jika sumber daya Anda rendah vi hampir dijamin untuk selalu bekerja, saya tidak begitu yakin tentang vim.
Anda mungkin menggunakan (warna)
di bawah pengguna normal Anda dan
di bawah sudo atau root. Anda dapat memeriksa dengan menggunakan:
sekali di bawah pengguna normal Anda dan yang lainnya via sudo
Lakukan a
jika Anda membutuhkan detail lebih lanjut
sumber
Pada sistem RHEL,
/bin/vi
biasanya versi minimalvim
, tanpa dukungan penyorotan sintaksis./usr/bin/vim
adalah editor berfitur lengkap. Sangat mungkin bahwa di lingkungan pengguna Anda,vi
adalah alias untukvim
. Coba ini:Apakah Anda mendapatkan penyorotan sintaksis sekarang?
sumber
Anda
vi
mungkin/bin/vi
dari paketvim-minimal
yang tidak mendukung penyorotan sintaksis.sudo vi
diluncurkan/bin/vi
untuk Anda.Bash hanya melakukan ekspansi alias pada kata pertama di baris perintah Anda, jadi di:
vi
tidak digantivim
bahkan jika Anda memiliki alias yang ditetapkan.Solusinya adalah mendefinisikan alias lain (untuk pengguna yang memohon
sudo
):Perhatikan spasi setelah yang kedua
sudo
.Dengan ini
sudo
, bash akan melakukan ekspansi alias untukvi
disudo vi
. Dialias
bagian Bash doc tertulis:Setelah Anda memasukkan perintah Anda, Anda dapat menekan Ctrl+ Alt+ Edi
bash
untuk melihat hasil ekspansi.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 bekerja.Dapat juga dicatat bahwa
vi
tidak di alias untuk root pada beberapa distro di /etc/profile.d/vim.sh:Mengubah ini juga tidak akan menyelesaikan masalah.
sumber
Secara default di 5.4 vi adalah default. Saya lupa versi apa yang dimulai. Ini akan menambahkan alias yang diperlukan untuk Anda:
sumber
saya menemukan bahwa dalam versi vim saya (instal dengan
sudo apt-get install vim
pada debian 7)syntax on
perintah didefinisikan pada basis per pengguna di~/.vimrc
. namun secara default instal tidak membuat/root/.vimrc
file untuksudo vi
dimuat. jadi saya hanya menyalin~/.vimrc
ke/root/
dir dan ini berhasil:sudo cp ~/.vimrc /root/
sumber
Ini karena pengguna root Anda tidak memiliki file konfigurasi vim. jadi cukup salin file konfigurasi vim pengguna standar Anda ke direktori root.
sudo cp -r ~/.vi* /root/
sesuatu seperti itu.nb: periksa apakah Anda belum mengajukan korespondensi
~/vi*
yang bukan untuk vim.sumber
1) Periksa apakah Anda benar-benar menggunakan vim dan bukan vi (yang sayangnya sering default pada sistem yang baru diinstal)
2) Periksa apakah Anda
/etc/vim/vimrc
memiliki garissyntax on
3) Tidak semua jenis file memiliki info penyorotan sintaks yang tersedia secara default ....
sumber
Bagi yang masih mencari bantuan, coba perintah ini.
sudovi = which sudo vi
usrvi = which vi
Jika tidak...
mv $sudovi $sudovi.save
ln -s $usrvi $sudovi
(tautan simbolik)sumber