为什么我没有语法高亮当我sudo vi <文件名>?

我不明白如何在使用sudo时通过vi编辑文件中的语法突出显示。 当我sudo vi <filename>terminal只是我的terminal设置的黑色和白色。 在vi中,如果我input:syntax on没有任何变化的:syntax on

当我vi <filename>所有的语法是正确的颜色。 使用RHEL 5.4,相关环境:

 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 

百灵可能是最可能的答案。 你可能不希望把你的root账户vi永久地改成vim,就好像你的资源是低的,vi几乎可以保证总能正常工作,我对vim不是很确定。

您可能正在使用(颜色)

 /usr/bin/vim 

在你的普通用户和

 /bin/vi 

根据sudo或根。 你可以使用

 which vi 

一次在你的普通用户下,另一个通过sudo

 sudo which vi 

做一个

 man which 

如果你需要更多的细节

在RHEL系统上, /bin/vi通常是vim的最小版本,没有任何语法高亮支持。 /usr/bin/vim是全function的编辑器。 很可能在你的用户环境中, vivim的别名。 尝试这个:

 sudo vim /some/file 

你现在语法突出吗?

你的vi可能是vim-minimal软件包中的/bin/vi ,它不支持语法高亮显示。 sudo vi为你启动/bin/vi

Bash只对命令行中的第一个单词进行别名扩展,所以在:

 sudo vi 

即使你定义了别名, vi也不会被vim取代。

解决scheme是定义另一个别名(用于调用sudo的用户):

别名sudo ='sudo'

注意第二个sudo之后的空间。

使用这个sudo ,bash将在sudo vivi做别名扩展。 在Bash文档的alias部分,它说:

如果别名值的最后一个字符是空白,则别名后面的下一个命令字也将被检查以进行别名扩展。

input命令后,可以在bashCtrl + Alt + E查看扩展结果。

积分:

https://bbs.archlinux.org/viewtopic.php?id=36796

http://www.shellperson.net/using-sudo-with-an-alias


/root/.bashrc简单别名vi将不起作用。

也可能会注意到vi在/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 

改变这也不会解决问题。

在默认情况下,vi是默认的。 我忘记了开始的版本。这将为您添加必要的别名:

 cat <<_EOF >>/root/.bashrc alias "vi"="/usr/bin/vim" _EOF 

我发现在我的vim版本中(在debian 7上使用sudo apt-get install vim进行sudo apt-get install vim )在~/.vimrc每个用户都定义了命令syntax on 。 但是默认情况下,安装并没有为sudo vi加载创build一个/root/.vimrc文件。 所以我只是将~/.vimrc复制到/root/ dir中,这样做的方法是: sudo cp ~/.vimrc /root/

1)检查你是否真的使用vim而不是vi(不幸的是经常在新安装的系统上)

2)检查你的“/ etc / vim / vimrc”:语法应该打开

3)不是所有种类的文件都有默认的systax-highlighting infos。

TSG

这是因为你的root用户没有vimconfiguration文件。 所以只需将您的标准用户vimconfiguration文件复制到根目录即可。

sudo cp -r ~/.vi* /root/类似的东西。

nb:检查你的文件是否对应于不是vim的~/vi*

对于那些仍在寻求帮助,请尝试这些命令。

  • sudovi = which sudo vi
  • usrvi = which vi
  • 如果这两个地点是一样的,那就不要继续。

除此以外…

  • mv $sudovi $sudovi.save
  • ln -s $usrvi $sudovi (符号链接)