Vim:Sudo 编辑破坏 Apache 语法高亮显示

问题描述 投票:0回答:3

Sudo Edit (sudo -e) 允许非特权用户安全地编辑文件。为此,它制作了一个文件的临时副本以进行编辑,然后在编辑完成后将其复制过来。

当我编辑 apache 文件时(例如,/etc/apache2/sites-enabled/mysite.com),sudoedit vim 无法确定它应该使用 Apache 语法高亮,所以我必须手动 :set syntax=阿帕奇。我怀疑 Vim 的语法高亮规则依赖于文件的完整路径,并且由于 sudoedit 将文件更改为类似 /var/tmp/mysiteRANDOMCHARS.com 的内容,它会丢失该路径信息。

有没有办法让我自动告诉 Vim 它应该使用 apache 语法高亮?

谢谢!

apache vim syntax-highlighting sudo vim-syntax-highlighting
3个回答
3
投票

这听起来像是 vi 模式行功能的罕见用例之一:

在你的

.vimrc

set modeline

在您的 Apache 配置文件中,位于顶部或底部的某处:

# vi: syntax=apache

2
投票

参见

/usr/share/vim/vim7x/filetype.vim
Vim 如何判断一个文件是
apache
文件。

在我的配置中,使用

$ vim
$ sudo -e
没有任何区别,因为
.com
扩展名无论如何都被视为
dcl
.

除了在您的

.com
中覆盖
~/.vimrc
自动命令外,我没有看到一种聪明而可靠的解决方法:

au BufNewFile,BufRead *.com set ft=apache

0
投票

这篇文章晚了几年,但这对我有用:

我使用

-e
代替
-E
进行编辑,它保留了环境变量,它会像正常启动
vim
一样运行。

但这可能不是最好的方法,因为我们松开了

sudo -e
/
sudoedit
给..

的“复制文件并编辑->替换”

然而,对于我的用例,它工作正常。

提示:

# in your shell .rc
export EDITOR=vim
alias sudoe="sudo -E $EDITOR $@"
© www.soinside.com 2019 - 2024. All rights reserved.