vimdiff 有等效的 sudoedit 吗?

vimdiff 有等效的 sudoedit 吗?

sudoedit我正在尝试养成使用, 而不是sudo vim.编辑 root 拥有的文件的习惯。这有一些优点,其中之一是它使用我用户的~/.vimrc.

有没有等效的东西,而不是使用sudo vimdiff

我尝试过的

  • 可以不直接使用vimdiff,而是以垂直分割方式打开两个文件,然后:diffthis在两个文件中运行。但是,如果我使用 . 打开一个文件sudoedit,那么我必须直接打开第二个文件,而不是sudoedit/var/tmp.
  • 人们还可以使用vim -O file1 file2.然而,不出所料,sudoedit -O失败了。

答案1

要确定要运行的编辑器,sudo请检查三个环境变量(按顺序):SUDO_EDITORVISUALEDITOR,并使用它找到的第一个编辑器。 (如果找不到,则会恢复为默认值。)

所以你可以让它运行 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

相关内容