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?


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.