Não entendo como permitir o destaque de sintaxe nos arquivos que estou editando via vi ao usar o sudo. Quando sudo vi <filename>
o terminal está apenas em preto e branco nas configurações do meu terminal. No vi, se eu entrar, :syntax on
nada muda.
Quando vi <filename>
toda a sintaxe é adequadamente colorida. Usando RHEL 5.4, env relevante:
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
não suporta cores, portanto, qualquer coisa que mostre cores está em execuçãovim
ou semelhante.Respostas:
Cotovia resposta é provavelmente o mais provável. Você pode não desejar alterar permanentemente suas contas raiz vi para vim, como se seus recursos estivessem baixos vi é quase garantido que funcione sempre, não tenho tanta certeza sobre o vim.
Você provavelmente está usando (cor)
sob seu usuário normal e
sob sudo ou root. Você pode verificar usando:
uma vez sob o usuário normal e a outra via sudo
Faça um
se você precisar de mais detalhes
fonte
Em um sistema RHEL,
/bin/vi
normalmente é uma versão mínima dovim
, sem nenhuma sintaxe destacando o suporte./usr/bin/vim
é o editor completo. É muito provável que, no seu ambiente de usuário,vi
seja um alias paravim
. Tente o seguinte:Você tem destaque de sintaxe agora?
fonte
O seu
vi
é provavelmente/bin/vi
a partir de pacotevim-minimal
que não suporta destaque de sintaxe.sudo vi
lança/bin/vi
para você.O Bash apenas expande o alias na primeira palavra em sua linha de comando, portanto em:
vi
não é substituído,vim
mesmo se você tiver esse alias definido.A solução é definir outro alias (para a chamada do usuário
sudo
):Observe o espaço após o segundo
sudo
.Usando isso
sudo
, o bash fará a expansão de alias paravi
insudo vi
. Naalias
seção do documento do Bash, ele diz:Depois de inserir o seu comando, você pode pressionar Ctrl+ Alt+ Eem
bash
ver o resultado de expansão.Créditos:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
Simplesmente aliasing
vi
em/root/.bashrc
não vai funcionar.Também é possível notar que
vi
não há alias para root em algumas distros no /etc/profile.d/vim.sh:Alterar isso também não resolverá o problema.
fonte
Por padrão no 5.4, o vi é o padrão. Eu esqueço qual versão foi iniciada. Isso adicionará o alias necessário para você:
fonte
Eu descobri que na minha versão do vim (instale
sudo apt-get install vim
no debian 7) osyntax on
comando é definido por usuário em~/.vimrc
. no entanto, por padrão, a instalação não criou um/root/.vimrc
arquivo parasudo vi
carregar. então eu apenas copiei~/.vimrc
no/root/
diretório e isso fez o truque:sudo cp ~/.vimrc /root/
fonte
Isso ocorre porque o usuário root não possui o arquivo de configuração do vim. basta copiar o arquivo de configuração padrão do usuário vim para o diretório raiz.
sudo cp -r ~/.vi* /root/
algo parecido.Nota: verifique se o arquivo não corresponde ao
~/vi*
que não é para o vim.fonte
1) Verifique se você realmente está usando o vim e não o vi (que infelizmente é o padrão frequentemente em novos sistemas instalados)
2) Verifique se o seu
/etc/vim/vimrc
tem a linhasyntax on
3) Nem todos os tipos de arquivos têm informações de destaque de sintaxe disponíveis por padrão ....
fonte
Para aqueles que ainda procuram ajuda, tente estes comandos.
sudovi = which sudo vi
usrvi = which vi
De outra forma...
mv $sudovi $sudovi.save
ln -s $usrvi $sudovi
(link simbólico)fonte