sudoedit
我正在尝试养成使用, 而不是sudo vim
.编辑 root 拥有的文件的习惯。这有一些优点,其中之一是它使用我用户的~/.vimrc
.
有没有等效的东西,而不是使用sudo vimdiff
?
我尝试过的
- 可以不直接使用
vimdiff
,而是以垂直分割方式打开两个文件,然后:diffthis
在两个文件中运行。但是,如果我使用 . 打开一个文件sudoedit
,那么我必须直接打开第二个文件,而不是sudoedit
在/var/tmp
. - 人们还可以使用
vim -O file1 file2
.然而,不出所料,sudoedit -O
失败了。
答案1
要确定要运行的编辑器,sudo
请检查三个环境变量(按顺序):SUDO_EDITOR
、VISUAL
和EDITOR
,并使用它找到的第一个编辑器。 (如果找不到,则会恢复为默认值。)
所以你可以让它运行 vimdiff 而不是 vim,如下所示:
$ VISUAL=vimdiff sudoedit file1 file2
如果您的 sudoers 策略仅允许您编辑某些文件,则这可能会失败,在这种情况下您可以添加一个参数:
$ VISUAL='vimdiff file1' sudoedit file2
在这种情况下,我假设您可以file1
作为普通用户阅读,但需要 root 访问权限才能阅读file2
。
(我使用VISUAL
它是因为我已经习惯了;请随意使用SUDO_EDITOR
。)
答案2
这是一个棘手的解决方案。请大家放心优化!也许这可能适用于~/vimrc
?
打开这两个文件sudoedit
$ sudoedit file1 file2
:vsp | b2
在每个窗口中运行
:diffthis