Edição remota de sudo no Vim

5

Como posso editar um arquivo remoto com o sudo?

Eu tenho acesso ssh / scp ao servidor remoto e sudo sem senha nele.

Eu quero editar /etc/some/file como raiz remota, então eu corri:

  $ Vi scp://server/etc/some/file

Não funciona, no entanto, citando não tenho permissões suficientes. Como posso fazer isso?

datacompboy
fonte
2
Você pode entrar no sistema remoto usando ssh remoteserver, e no servidor remoto executar sudo vim /etc/myfile. OU um comando: ssh -t remoteserver sudo vi /etc/myfile
taro
@taro E se ele não tiver um shell de login nessa máquina?
Swiss
Se ele não tem login, ele pode scp remote:/etc/myfile ~/myfileedite vim ~/myfile, mas será um problema para substituir o arquivo remoto por um alterado.
taro
2
O objetivo principal é usar o vim local (com minhas configurações, meu mapa de teclado, etc) no controle remoto. Sim, eu posso instalar em cada host minhas configurações - mas dessa maneira feia.
Estou tendo exatamente o mesmo problema e tenho exatamente a mesma motivação para usar um único programa central de VIM
puk

Respostas:

0

De acordo esta página da wiki você deve especificar seu nome de usuário e host assim:

vim scp://user@server//etc/some/file

E obrigado pela dica, eu não sabia que o vim é capaz de editar arquivos via scp.

KL-7
fonte
Desculpe, parece que isso não resolve o problema com as permissões, a menos que você faça login como root.
KL-7
O problema com permissões não é um problema. Se você quiser fazer coisas no nível da raiz, basta fazer o login como root, isso é bom no meu livro. Sua solução funciona bem.
romainl
Eu já disse - isso não permite acessar arquivos acessíveis por sudo.
1
A edição remota no Vim não é feita no servidor remoto. O arquivo é baixado localmente e reenviado após salvar
romainl
2
Eu sei Só quero encontrar netrw plugin / mod que permite não apenas scp, mas ssh + sudo.
datacompboy
0

Para expandir meu comentário ...

O Vim não faz esse tipo de coisa extravagante na máquina remota, não importa a conta que você usa. Limita-se ao download e upload: ler um arquivo remoto significa baixar o arquivo em um local temporário em sua máquina local, escrever um arquivo remoto significa fazer o upload da cópia local para a máquina remota.

Isso significa que você não será capaz de sudo antes de editar na máquina remota.

Se a conta usada para gravar / carregar o arquivo não for root, você não poderá sobrescrever o arquivo de propriedade da raiz. Essa é a segurança básica do UNIX / servidor.

Em vez de, ssh no servidor e use o Vim ou use o snippet do KL-7 com a conta certa.

Vejo :help netrw-xfere :help netrw-quickmap para recursos adicionais, como listagem de diretórios. Não sudo discernimento.

romainl
fonte
1
Você pode fazer isso no emacs, seu trampolim capaz de funcionar via ssh + sudo. Eu só estou procurando por plugin, que implementa a mesma coisa para o vim.
datacompboy