Řešení 1:
Larksova odpověď je pravděpodobně nejpravděpodobnější. Možná nebudete chtít změnit své root účty vi na vim trvale, protože pokud jsou vaše zdroje nízké, vi je téměř zaručeno, že vždy budou fungovat, nejsem si tak jistý vim.
Pravděpodobně používáte (barva)
/usr/bin/vim
pod vaším normálním uživatelem a
/bin/vi
pod sudo nebo root. Můžete to zkontrolovat pomocí:
which vi
jednou pod vaším běžným uživatelem a podruhé přes sudo
sudo which vi
Proveďte
man which
pokud potřebujete další podrobnosti
Řešení 2:
V systému RHEL /bin/vi je obvykle minimální verze vim bez podpory zvýrazňování syntaxe. /usr/bin/vim je plně vybavený editor. Je velmi pravděpodobné, že ve vašem uživatelském prostředí vi je alias pro vim . Zkuste toto:
sudo vim /some/file
Dostáváte nyní zvýraznění syntaxe?
Řešení 3:
Vaše vi je pravděpodobně /bin/vi z balíčku vim-minimal který nepodporuje zvýraznění syntaxe. sudo vi spustí /bin/vi pro vás.
Bash pouze rozbalí alias na prvním slově v příkazovém řádku, takže v:
sudo vi
vi není nahrazeno vim i když máte tento alias definovaný.
Řešení je definován jiný alias (pro uživatele volajícího sudo ):
alias sudo='sudo '
Všimněte si mezery za druhým sudo .
Pomocí tohoto sudo , bash provede rozšíření aliasu pro vi v sudo vi . V alias část dokumentu Bash říká:
Pokud je poslední znak hodnoty aliasu prázdný, pak se zkontroluje rozšíření aliasu i slovo nextcommand následující za aliasem.
Po zadání příkazu můžete stisknout Ctrl +Alt +E v bash zobrazíte výsledek rozšíření.
Kredity:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
Jednoduchý aliasing vi v /root/.bashrc nebude fungovat.
Lze také poznamenat, že vi nemá alias pro root v některých distribucích v /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
Změna tohoto problém také nevyřeší.
Řešení 4:
Ve výchozím nastavení v 5.4 vi je výchozí. Zapomněl jsem, ve které verzi to začalo. Tím se přidá potřebný alias:
cat <<_EOF >>/root/.bashrc
alias "vi"="/usr/bin/vim"
_EOF
Řešení 5:
Našel jsem to v mé verzi vim (instalace s sudo apt-get install vim v debianu 7) syntax on příkaz je definován pro jednotlivé uživatele v ~/.vimrc . ve výchozím nastavení však instalace nevytvořila /root/.vimrc soubor pro sudo vi naložit. tak jsem právě zkopíroval ~/.vimrc do /root/ dir a tohle se povedlo:sudo cp ~/.vimrc /root/