Ř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/