Como devo editar arquivos em uma rede com o Vim?

13

Atualmente estou fazendo isso por SSH em um servidor e executando o Vim no servidor. Isso tem o benefício de não ter que lidar com a sintaxe complicada de abrir arquivos de um servidor remoto por meio do SCP e, mais importante, poder navegar muito rapidamente pelo sistema de arquivos do servidor. Por outro lado, tem lag, o que dificulta a edição.

Qual é a maneira canônica de editar muitos arquivos remotos?

    
por jcora 23.10.2013 / 21:00

4 respostas

26

Você pode usar SSHFS para montar uma casa remota em uma pasta local. Tem a vantagem de usar a infraestrutura atual e a baixa latência do vim local.

    
por 23.10.2013 / 21:39
19

Você pode editar remotamente com um vim ou gvim local.

:e scp://[email protected]/~/myfiles/whatever.file

scp é um protocolo de cópia segura . Ele autentica da mesma forma que ssh , portanto sua chave ssh precisa estar disponível, etc. Existem vários outros protocolos suportados (veja :help netrw-externapp ), mas scp é provavelmente o mais fácil se você já estiver usando ssh no mesmo lugar.

Você pode navegar pelos diretórios dessa forma, apenas certifique-se de que o caminho termine com / . Caso contrário, o vim o transforma em um novo arquivo.

:w grava automaticamente o arquivo via scp. Se a gravação falhar por algum motivo, você deve notar, já que eles serão um tipo de coisa "shell retornado 1" na barra de status. Entretanto, cuidado: se você não notar, o vim não sabe e isso pode ter consequências - por exemplo, se você sair agora, ele não irá avisá-lo. É particularmente fácil perder isso se você usa :wa muito; Essa é a única ressalva que tenho.

Para os documentos oficiais, consulte :help netrw .

    
por 23.10.2013 / 22:34
2

Eu usaria o rsync. Transfere apenas o que mudou. Assim:

rsync -e ssh -va remoteuser@remotehost:remotedir .

edite os arquivos localmente, a seu próprio gosto. Zero atraso Você pode inspecionar todos os arquivos antes de enviá-los:

rsync -e ssh -va . remoteuser@remotehost:remotedir

Estou assumindo que você primeiro crie seu diretório local e cd para isso. Você também pode fazê-lo lidar com a remoção de arquivos, mas tenha muito cuidado com isso, porque executar isso no diretório errado poderia atacar uma árvore de diretórios inteira.

rsync -e ssh -va --delete . remoteuser@remotehost:remotedir

O que eu faço é executá-lo em "modo seco" primeiro, usando a sinalização 'n', assim:

rsync -e ssh -van --delete . remoteuser@remotehost:remotedir

Ele irá relatar o que teria feito, se fosse real. Se estiver satisfeito com a lista de relatórios, eu a executo novamente e removerei a sinalização 'n'.

O rsync é muito eficiente. Existem várias outras bandeiras também. É bem sofisticado.

    
por 24.10.2013 / 06:01
0

Pode ser que você tenha escolhido a forma mais apropriada - forma SSH, mas ainda dependendo da natureza dos arquivos editados, você poderia alocar uma pequena partição, fazendo com que ela fosse compartilhada e colocar os arquivos lá, claro se a política de segurança permitir esta acção. Para esta sugestão você pode usar o NFS ou o Samba mais facilmente, mas ainda editar o arquivo de teste é uma concepção geral no UNIX e pode ser que você tenha que mantê-lo da maneira que você faz atualmente.

    
por 23.10.2013 / 21:15