Achèvement du nom de fichier pour les fichiers distants

16

Mon ami m'a montré il y a quelques jours un truc sympa sur Emacs où il pouvait simplement ouvrir un fichier sur un serveur distant et j'ai instantanément pensé "il devrait y avoir un moyen de le faire dans vim aussi" et c'était vrai.

Je peux juste m'en servir :e scp://user@server//filepath, pas de problème;). Cependant, il pouvait simplement taper le nom du serveur, puis obtenir l'achèvement des chemins de fichier et des noms (avec onglet), ce que je n'ai pas pu faire. Est-ce que quelqu'un sait si cela peut être fait dans vim?

m.ajallooeian
la source
1
J'aurais bien que ctrlp puisse le supporter ... mais apparemment c'est une demande de fonctionnalité .
muru

Réponses:

6

Oui , mais actuellement (2015) n'est pas prêt à l'emploi, car le gestionnaire de fichiers intégré de vim ne prend pas en charge nativement la navigation à distance. .

Mise à jour Q3 @ 2016:

Il existe plusieurs solutions, avec différents degrés de confort / compatibilité / effort. Tous ensemble, ils constituent une solution intéressante, mais ils peuvent également être utilisés individuellement:

Si vous ne pouvez pas modifier votre environnement ou .vimrc-uniquement: Dans le gestionnaire de fichiers vim, vous pouvez utiliser les touches // ?pour rechercher en avant / en arrière, et vous pouvez mapper TABsur l'une d'entre elles. C'est plus puissant qu'il n'y paraît pour vous naviguer rapidement dans le système de fichiers. Description ci-dessous.

Solution de base (pour vim standard avec NetRW):

  • Ne pointez pas vim vers un fichier distant
  • Pointez sur un répertoire "en haut", par exemple $HOME:, vim scp://files/ou /:vim scp://files///
  • Le plugin NetRW s'ouvre dans le dossier de niveau supérieur souhaité ( /ou $HOME).
  • Dans NetRW, vous pouvez naviguer avec étonnamment peu de touches:
  • Pour modifier la télécommande /etc/network/interfacesavec NetRW sur /:

    /etENTERENTER/netwENTERENTER/intENTERt

Vous pouvez toujours utiliser ?pour rechercher vers le haut, sans envelopper par le haut.

Encore mieux , pour presque imiter TAB -Completion ajouter .vimrc:

  • Carte TABà / en Netrw:autocmd filetype netrw noremap <buffer> <TAB> /
  • Configurez NetRW pour TreeView: let g:netrw_liststyle=3
  • Ajoutez une bascule pour un VExplore distant pour<C-E> , si vous le souhaitez (je l'utilise).
  • Je recommande également incsearch, ignorecaseet smartcasepour NetRW, ou tous les tampons.

Comparé à la complétion de tabulation "conventionnelle", ce qui précède est différent, mais très confortable.

Remarque: Tout ce qui précède suppose que les connexions sans mot de passe basées sur le certificat ssh ~/.ssh/configavec l'utilisateur, le port, la compression, JumpHost (ProxyCommand sont configurées de telle sorte que seuls le nom d'hôte / les alias sont nécessaires.

Cela a également été discuté précédemment hors site ici et ici

Alex Stragies
la source
1
Pouvez-vous développer l'astuce en résumant le lien? Un lien simple n'est pas très utile si le site tombe en panne ou meurt.
muru
Je pense que c'est plus ou moins ma "solution" finale, jusqu'à ce que NetRW puisse le faire de manière native. Je m'occuperai toujours des problèmes connus restants, mais attendez-vous à trouver (ou à être signalé) des bogues, des correctifs et des améliorations plus subtils. Ils seront traités / intégrés. Merci d'avoir commenté.
Alex Stragies