Comment éditer des fichiers FTP avec VIM et éviter de taper le nom d'hôte à chaque fois?

2

Je dois éditer des fichiers distants avec vim, qui se trouvent sur un serveur FTP. Il n'y a pas d'accès SSH ou SFTP. Juste FTP. J'ai essayé de synchroniser via curlftpfs, les fichiers sont apparus dans un répertoire local, mais je ne peux pas leur écrire, je reçois toutes sortes d'erreurs et, lorsque j'arrive à écrire des fichiers avec des terminaisons aléatoires, ils sont générés sur le serveur. index.php écrit sur le serveur en tant qu'index.phz, index.phy, etc ...

J'avais le texte sublime 2 installé mais je ne peux plus l'exécuter après avoir installé de nouveaux pilotes pour ma carte graphique. J'ai également essayé n ++ avec WINE, mais je n'ai pas eu la chance d'ouvrir des fichiers FTP situés à un niveau de répertoire plus profond.

J'ai vu qu'il existe différentes approches avec vim pour éditer des fichiers sur le FTP, mais chacune d'entre elles nécessite une saisie de type: e http: // [utilisateur @] ordinateur / chemin (avec le plugin netrw). Je voudrais vraiment éviter toute sorte de répétition, plutôt que de mettre en place une cartographie relative. Il est étrange qu’il n’y ait pas de solution pour vim car c’est un outil de développement pour la plupart, sublime et npp l’a déjà résolu de manière simple. taper sur et sur le même nom d’hôte / chemin, etc. casserait un principe simple de DRY.

Idealy serait si je pouvais mettre en cache les fichiers localement avec un outil de synchronisation, et les télécharger sur ftp en mappant le chemin local -> distant, juste après que vim écrit dans un fichier, ou si j'émettais une commande de téléchargement, etc. (sans avoir à taper le fichier ouvert à chaque fois). Il y a beaucoup de fichiers sur le serveur, donc je ne peux pas les mémoriser. Il est important pour moi de les mettre en cache localement pour pouvoir y accéder rapidement et les télécharger à l'aide d'une simple commande.

J'exécute Slackware 13.37 x64

Cagoule de gardien
la source

Réponses:

4

Vous pouvez utiliser netrw pour afficher le contenu d'un répertoire distant avec:

:e ftp://[email protected]/ <-- note the slash at the end.

à partir de là, vous pouvez ouvrir un fichier dans une autre fenêtre avec Pou dans la fenêtre en cours avec <CR>.

Ne paniquez pas si vous perdez la liste de fichiers: elle est toujours là et vous pouvez la récupérer :Rex.


Ou utilisez simplement un client FTP graphique comme Filezilla ou gFTP et sa fonction "Modifier dans ...".

romainl
la source
J'ai essayé la méthode vim et filezilla, et le filezilla est beaucoup plus rapide que le vim. Cependant, si j'ouvre plus de fichiers, de nombreuses nouvelles fenêtres vim font trop de dégâts. Donnera gFTP un essai. Je souhaite juste pouvoir exécuter à nouveau sublime, car il bat toutes les autres méthodes anciennes qui me rendent contre-productif :(
Keeper Hood
gFTP fonctionne comme Filezilla: le désordre de Windows est la faute de Vim. Dans les deux clients FTP, vous devez définir cette commande comme « éditeur »: "/usr/bin/gvim" --servername filezilla --remote-tab.
Romainl
Pourquoi ne pouvez-vous pas exécuter Sublime? Cela fonctionne très bien sous Linux.
Romainl
Cela a fonctionné, mais j'ai mis à jour certains pilotes graphiques et il se bloque au début maintenant, je ne veux pas passer à l'offtopic.
Keeper Hood
Le --remote-tab fonctionne beaucoup mieux, me demandant comment puis-je définir la commande pour ajouter un tampon au lieu d'un onglet si j'en ai besoin? -
Keeper Hood
1

Bien que vous ne puissiez pas utiliser simplement les noms de fichiers relatifs (car le répertoire de travail local est différent), vous pouvez utiliser les modificateurs de nom de fichier pour faire référence aux fichiers de manière relative:

:edit %:h/another.html
Ingo Karkat
la source
0

Je ressens votre douleur, j'adore utiliser vim et, avec le client FTP, c'est presque comme si vous aviez SSH. Le flux de travail que j'utilise est

  1. Connectez-vous au serveur FTP à l'aide de la commande open :e ftp://username@server/
  2. Créer un nouvel onglet de la sélection en cours :tab split
  3. Déplacer vers le nouvel onglet :tabn
  4. Accédez au fichier dans vim
  5. Quand vous avez fini de modifier le fichier, fermez l'onglet :wq
  6. Répétez à partir de l'étape 2

J'ai trouvé que cela fonctionne le mieux.

Les onglets dans Vim sont excellents, ils peuvent vous permettre d’avoir un certain nombre de fichiers et vous pouvez même tirer yet supprimer des dlignes entre des fichiers ouverts dans la même session. Très sympa.

Kelly Hays
la source
0

Si vous utilisez vim, ftp://hostname/path/vous obtiendrez une liste de répertoires. Si vous travaillez souvent avec cet hôte, vous voudrez peut-être le marquer d'un signet. Avec netrw v153j, vous pouvez utiliser :NetrwMB filename(s); vous pouvez utiliser mb pour ajouter un signet au répertoire actuel; et vous pouvez utiliser qbpour répertorier les signets actuels (et leur historique). Les signets et autres sont également disponibles via le menu avec gvim. Pour aller à un signet, utilisez gb.

Donc, je vous suggère de marquer le répertoire, de revenir à la liste de répertoires via :Rexou gbet d’éditer les fichiers ainsi répertoriés.

utilisateur21497
la source
0

Je sais que cela est ancien, mais une autre option consiste à utiliser, par exemple, curlftpfs ( compilation Slackware ici ) pour monter le serveur FTP sur un point de montage, puis à utiliser votre éditeur de texte local.

Jason C
la source