Existe um equivalente sudoedit para o vimdiff?

1

Estou tentando criar o hábito de editar arquivos de propriedade da raiz com sudoedit , em vez de sudo vim . Isso tem algumas vantagens, uma das quais é usar o ~/.vimrc do meu usuário.

Existe um equivalente, em vez de usar sudo vimdiff ?

O que eu tentei

  • Em vez de usar vimdiff diretamente, é possível abrir dois arquivos em divisões verticais e executar :diffthis em ambos. No entanto, se eu abrir um arquivo com sudoedit , precisarei abrir o segundo arquivo diretamente, em vez de sudoedit criar automaticamente uma cópia desse arquivo em /var/tmp .
  • Também é possível abrir arquivos diretamente em divisões usando vim -O file1 file2 . No entanto, não é surpresa que sudoedit -O falhe.
por Sparhawk 25.02.2015 / 01:56

2 respostas

6

Para determinar qual editor executar, sudo verifica três variáveis de ambiente (em ordem): SUDO_EDITOR , VISUAL e EDITOR e usa o primeiro editor encontrado. (Se não encontrar um, volta a um padrão.)

Então você pode fazê-lo rodar o vimdiff ao invés do vim da seguinte forma:

$ VISUAL=vimdiff sudoedit file1 file2

Se sua política de sudoers permitir que você edite apenas alguns arquivos, isso poderá falhar. Nesse caso, você poderá adicionar um parâmetro:

$ VISUAL='vimdiff file1' sudoedit file2

Nesse caso, suponho que você possa ler file1 como usuário normal, mas precisa de acesso root para ler file2 .

(Estou usando VISUAL porque é com isso que estou acostumado; sinta-se à vontade para usar SUDO_EDITOR .)

    
por 25.02.2015 / 02:10
1

Aqui está uma solução complicada. Por favor, sinta-se livre para otimizá-lo! Talvez isso possa funcionar em ~/vimrc ?

Abra os dois arquivos com sudoedit

$ sudoedit file1 file2

Dividir verticalmente um buffer

:vsp | b2

Em cada janela, execute

:diffthis
    
por 25.02.2015 / 02:05