Я не понимаю, как разрешить подсветку синтаксиса в файлах, которые я редактирую через vi при использовании sudo. Когда я sudo vi <filename>
терминал только черно-белый из моих настроек терминала. В vi если я ввожу :syntax on
ничего не меняется.
Когда я vi <filename>
весь синтаксис правильно окрашен. Используя RHEL 5.4, соответствующие env:
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
не поддерживает цвет, поэтому все, что показывает цвет, работаетvim
или похоже.Ответы:
Ответ жаворонка, вероятно, наиболее вероятен. Возможно, вы не захотите постоянно менять свои корневые учетные записи vi на vim, так как если у вас мало ресурсов, vi почти гарантированно будет работать всегда, я не уверен в vim.
Вы, вероятно, используете (цвет)
под вашим обычным пользователем и
под sudo или root. Вы можете проверить, используя:
один раз под обычным пользователем, а другой через sudo
Сделать
если вам нужно больше деталей
источник
В системе RHEL,
/bin/vi
как правило, это минимальная версияvim
, без какой-либо поддержки подсветки синтаксиса./usr/bin/vim
это полнофункциональный редактор. Весьма вероятно, что в вашей пользовательской средеvi
это псевдоним дляvim
. Попробуй это:Вы получаете подсветку синтаксиса сейчас?
источник
Вы,
vi
вероятно,/bin/vi
из пакета,vim-minimal
который не поддерживает подсветку синтаксиса.sudo vi
запускает/bin/vi
для вас.Bash выполняет расширение псевдонима только для первого слова в командной строке, поэтому:
vi
не заменяется,vim
даже если у вас есть этот псевдоним.Решением является определение другого псевдонима (для вызывающего пользователя
sudo
):Обратите внимание на пробел после второго
sudo
.Используя это
sudo
, bash сделает расширение псевдонима дляvi
insudo vi
. Вalias
разделе Bash Doc написано:После ввода вашей команды, вы можете нажать Ctrl+ Alt+ Eв,
bash
чтобы увидеть результат расширения.Кредиты:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
Просто псевдоним
vi
в/root/.bashrc
не будет работать.Также можно отметить, что
vi
в некоторых дистрибутивах нет псевдонима для root в /etc/profile.d/vim.sh:Изменение этого также не решит проблему.
источник
По умолчанию в 5.4 vi по умолчанию. Я забыл, с какой версии это началось. Это добавит вам необходимый псевдоним:
источник
я обнаружил, что в моей версии vim (установка с
sudo apt-get install vim
Debian 7)syntax on
команда определяется для каждого пользователя в~/.vimrc
. однако по умолчанию при установке не было создано/root/.vimrc
файла дляsudo vi
загрузки. так что я просто скопировал~/.vimrc
в/root/
каталог, и это сделало трюк:sudo cp ~/.vimrc /root/
источник
Это потому, что у вашего пользователя root нет файла конфигурации vim. так что просто скопируйте ваш стандартный файл конфигурации vim пользователя в корневой каталог.
sudo cp -r ~/.vi* /root/
что-то такое.nb: проверьте, нет ли у вас файла, который соответствует
~/vi*
не для vim.источник
1) Проверьте, действительно ли вы используете vim, а не vi (который, к сожалению, часто используется по умолчанию на новых установленных системах)
2) Проверьте, что у вас
/etc/vim/vimrc
есть линияsyntax on
3) Не все виды файлов имеют информацию о подсветке синтаксиса, доступную по умолчанию ....
источник
Для тех, кто все еще ищет помощь, попробуйте эти команды.
sudovi = which sudo vi
usrvi = which vi
Иначе...
mv $sudovi $sudovi.save
ln -s $usrvi $sudovi
(символическая ссылка)источник