Finalización de nombre de archivo para archivos remotos

16

Mi amigo me mostró un truco genial en Emacs hace unos días donde podía abrir un archivo en un servidor remoto e instantáneamente pensé "debería haber una manera de hacerlo también en vim" y era cierto.

Puedo usar :e scp://user@server//filepathpara hacer eso, no hay problema;). Sin embargo, podría simplemente escribir el nombre del servidor y luego completar las rutas y los nombres de los archivos (con pestaña), algo que no he podido hacer. ¿Alguien sabe si esto se puede hacer en vim?

m.ajallooeian
fuente
1
Pensé que ctrlp podría admitirlo ... pero aparentemente es una solicitud de función .
muru

Respuestas:

6

, pero actualmente (2015) no está listo para usar, porque el administrador de archivos incorporado de vim no admite de forma nativa la navegación remota. .

Actualización Q3 @ 2016:

Hay varias soluciones alternativas, con diferentes grados de comodidad / compatibilidad / esfuerzo. Todos juntos suman una buena solución, pero también se pueden usar individualmente:

Si no puede modificar su entorno o .vimrc-solo: en el administrador de archivos vim puede usar las teclas // ?para buscar hacia adelante / hacia atrás, y puede asignarlas TABa una de ellas. Esto es más poderoso de lo que parece para navegar rápidamente por el sistema de archivos. Descripción a continuación.

Solución básica (para vim estándar con NetRW):

  • No apunte vim a un archivo remoto
  • Señale un directorio "en la parte superior", por ejemplo $HOME: vim scp://files/o /:vim scp://files///
  • El complemento NetRW se abre en la carpeta deseada de nivel superior ( /o $HOME).
  • En NetRW, puede navegar con sorprendentemente pocas pulsaciones de teclas:
  • Para editar el control remoto /etc/network/interfacescon NetRW en /:

    /etENTERENTER/netwENTERENTER/intENTERt

Siempre puede usar ?para buscar hacia arriba, sin envolver desde arriba.

Aún mejor , para casi imitar TAB -Completar agregar .vimrc:

  • Mapa TABpara / en NetRW:autocmd filetype netrw noremap <buffer> <TAB> /
  • Configure NetRW para TreeView: let g:netrw_liststyle=3
  • Agregue un conmutador para un VExplore remoto para<C-E> , si lo desea (lo uso).
  • También recomiendo incsearch, ignorecasey smartcasepara NetRW, o todos los buffers.

En comparación con la finalización de pestañas "convencional", lo anterior es diferente, pero muy cómodo.

Nota: Todo lo anterior supone conexiones sin contraseña basadas en certificados ssh ~/.ssh/configcon User, Port, Compression, JumpHost (ProxyCommand se configura de tal manera que solo se necesitan alias / nombre de host).

Esto también se ha discutido anteriormente fuera del sitio aquí y aquí

Alex Stragies
fuente
1
¿Puedes ampliar el truco resumiendo el enlace? Un enlace simple no es muy útil si el sitio se cae o muere.
muru
Creo que esta es más o menos mi "solución" final, hasta que NetRW pueda hacer esto de forma nativa. Todavía me ocuparé de los problemas conocidos restantes, pero espero encontrar (o señalar) errores más sutiles, correcciones y mejoras. Serán abordados / incorporados. Gracias por comentar
Alex Stragies