Sudo Edit (sudo -e) 允许非特权用户安全地编辑文件。为此,它制作了一个文件的临时副本以进行编辑,然后在编辑完成后将其复制过来。
当我编辑 apache 文件时(例如,/etc/apache2/sites-enabled/mysite.com),sudoedit vim 无法确定它应该使用 Apache 语法高亮,所以我必须手动 :set syntax=阿帕奇。我怀疑 Vim 的语法高亮规则依赖于文件的完整路径,并且由于 sudoedit 将文件更改为类似 /var/tmp/mysiteRANDOMCHARS.com 的内容,它会丢失该路径信息。
有没有办法让我自动告诉 Vim 它应该使用 apache 语法高亮?
谢谢!
这听起来像是 vi 模式行功能的罕见用例之一:
在你的
.vimrc
:
set modeline
在您的 Apache 配置文件中,位于顶部或底部的某处:
# vi: syntax=apache
参见
/usr/share/vim/vim7x/filetype.vim
Vim 如何判断一个文件是apache
文件。
在我的配置中,使用
$ vim
或 $ sudo -e
没有任何区别,因为 .com
扩展名无论如何都被视为 dcl
.
除了在您的
.com
中覆盖 ~/.vimrc
自动命令外,我没有看到一种聪明而可靠的解决方法:
au BufNewFile,BufRead *.com set ft=apache
这篇文章晚了几年,但这对我有用:
我使用
-e
代替 -E
进行编辑,它保留了环境变量,它会像正常启动 vim
一样运行。
但这可能不是最好的方法,因为我们松开了
sudo -e
/sudoedit
给..的“复制文件并编辑->替换”
然而,对于我的用例,它工作正常。
提示:
# in your shell .rc
export EDITOR=vim
alias sudoe="sudo -E $EDITOR $@"