Conclusão de nome de arquivo para arquivos remotos

16

Meu amigo me mostrou um truque legal no Emacs há alguns dias atrás, onde ele podia simplesmente abrir um arquivo em um servidor remoto e eu pensei instantaneamente "deveria haver uma maneira de fazer isso no vim também" e isso era verdade.

Eu posso apenas usar :e scp://user@server//filepathpara fazer isso, não há problema;). No entanto, ele poderia apenas digitar o nome do servidor e obter a conclusão dos caminhos e nomes dos arquivos (com guia), algo que não consegui fazer. Alguém sabe se isso pode ser feito no vim?

m.ajallooeian
fonte
1
Eu teria que ctrlp poderia apoiá-lo ... mas, aparentemente, é uma solicitação de recurso .
muru

Respostas:

6

Sim , mas atualmente (2015) não está pronto para uso, porque o gerenciador de arquivos interno do vim não suporta nativamente a navegação remota. .

Atualização Q3 @ 2016:

Existem várias soluções alternativas, com diferentes graus de conforto / compatibilidade / esforço. Juntos, eles somam uma boa solução, mas também podem ser usados ​​individualmente:

Se você não pode modificar o seu ambiente ou .vimrcapenas: No gerenciador de arquivos vim, você pode usar as teclas // ?para avançar / retroceder e pode mapear TABpara um deles. Isso é mais poderoso do que parece para navegar rapidamente pelo sistema de arquivos. Descrição abaixo.

Solução básica (para vim padrão com NetRW):

  • Não aponte o vim para um arquivo remoto
  • Aponte para um diretório "no topo", por exemplo $HOME: vim scp://files/ou /:vim scp://files///
  • O plug-in NetRW é aberto na pasta de nível superior desejada ( /ou $HOME).
  • No NetRW, você pode navegar com surpreendentemente poucas teclas pressionadas:
  • Para editar remotamente /etc/network/interfacescom o NetRW ativado /:

    /etENTERENTER/netwENTERENTER/intENTERt

Você sempre pode usar ?para pesquisar para cima, sem quebrar a partir do topo.

Ainda melhor , para quase imitar TAB -Completion, adicione .vimrc:

  • Mapeie TABpara / no NetRW:autocmd filetype netrw noremap <buffer> <TAB> /
  • Configure o NetRW para TreeView: let g:netrw_liststyle=3
  • Adicione uma alternância para um VExplore remoto para<C-E> , se você quiser (eu o uso).
  • Eu também recomendo incsearch, ignorecasee smartcasepara NetRW, ou todos os buffers.

Comparado com o preenchimento de guias "convencional", o acima é diferente, mas muito confortável.

Nota: Todas as ~/.ssh/configopções acima pressupõem conexões sem senha baseadas em certificado ssh com Usuário, Porta, Compactação, JumpHost (o ProxyCommand é configurado de forma que apenas nomes de host / aliases sejam necessários.

Isso também foi discutido anteriormente aqui e aqui

Alex Stragies
fonte
1
Você pode expandir o truque resumindo o link? Um link simples não é muito útil se o site for desativado ou morrer.
Muru
Eu acho que essa é mais ou menos a minha "solução" final, até o NetRW poder fazer isso nativamente. Ainda vou cuidar dos problemas conhecidos restantes, mas espero encontrar (ou ser apontado) bugs, correções e aprimoramentos mais sutis. Eles serão abordados / incorporados. Obrigado por comentar.
Alex Stragies