我不明白如何在使用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的编辑器。 很可能在你的用户环境中, vi
是vim
的别名。 尝试这个:
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 vi
为vi
做别名扩展。 在Bash文档的alias
部分,它说:
如果别名值的最后一个字符是空白,则别名后面的下一个命令字也将被检查以进行别名扩展。
input命令后,可以在bash
按Ctrl + 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
(符号链接)