Conseils Vim - Modifier des fichiers distants avec Vim sous Linux
Vim est l'un des meilleurs éditeurs de texte hautement configurable, doté de nombreuses fonctionnalités uniques que vous ne pouvez pas trouver dans d'autres éditeurs de texte. Aujourd'hui, nous allons aborder l'une des fonctionnalités utiles : l'édition des fichiers du système distant à partir du système local. Cela signifie que nous pouvons modifier un fichier stocké dans un système Linux distant sans avoir à nous y connecter via SSH ou toute autre méthode. Avant de connaître cette astuce, je me connectais généralement en SSH au système distant, puis je modifiais les fichiers. Cependant, il existe également un moyen de modifier des fichiers distants avec Vim depuis votre système local. À partir de la version Vim 7.x, leplugin netrw.vim est installé en tant que plugin standard. Ce plugin vous permet d'éditer des fichiers via ftp, rcp, scp ou http.
Qu'est-ce que le plugin Netrw ?
Pour ceux qui se posent la question, le plug-in Netrw (lecture, écriture et navigation orientées réseau) prend en charge l'édition, la lecture et l'écriture de fichiers en local et à distance sur les réseaux. Il prend également en charge la navigation dans les répertoires locaux et distants. Pour plus de détails, tapez :help netrw dans votre session vim. Allons de l'avant et voyons comment modifier des fichiers stockés dans un système Linux distant à partir de notre système local à l'aide de Vim.
Modifier des fichiers distants avec Vim sous Linux
Modifier un fichier distant avec Vim est très simple :
vim scp://user@remotesystem//path_to_file
Exemple :
J'ai un fichier texte nommé info.txt dans mon système distant avec la ligne suivante.
Welcome to OSTechNix
Maintenant, je vais éditer ce fichier, y apporter quelques modifications, puis enregistrer et fermer le fichier. Tout cela depuis mon système local !
Pour ce faire, je lance simplement la commande suivante :
vim scp://sk@192.168.225.22/info.txt
Voici la démo visuelle de la tâche ci-dessus :
Modifier des fichiers distants avec Vim sous Linux
Ici, vous devez faire attention aux trois choses suivantes.
1. user@remotesystem (par exemple sk@192.168.225.22) - Ici sk est le nom d'utilisateur du système distant. 192.168.225.22 est l'adresse IP du système distant.
2. Barre oblique simple (/) - Si vous souhaitez modifier un fichier stocké dans le répertoire $HOME d'un système distant, vous devez utiliser une barre oblique finale pour séparer l'adresse IP ou le nom d'hôte du système distant à partir du chemin du fichier. Dans le cas ci-dessus, j'ai stocké le fichier info.txt dans le répertoire $HOME, j'ai donc utilisé une seule barre oblique finale.
3./(Doubles barres obliques) - Pour spécifier le chemin complet d'un fichier, vous devez utiliser des doubles barres obliques. Une barre oblique (/) est utilisée pour séparer l'adresse IP ou le nom d'hôte du système distant du chemin d'accès réel au fichier. Et une autre barre oblique est utilisée pour mentionner le chemin absolu (complet) du fichier distant. Par exemple, disons que vous modifiez un fichier nommé info.txt qui se trouve dans le répertoire /home/sk/Documents/ de votre système distant. Dans ce cas, la commande serait :
vim scp://sk@192.168.225.22//home/sk/Documents/info.txt
Notez les doubles barres obliques entre l'adresse IP du système distant et le chemin du fichier. Les doubles barres obliques sont requises uniquement lorsque vous mentionnez le chemin absolu d'un fichier distant.
Vérifiez le contenu du fichier distant depuis votre système local :
$ ssh sk@192.168.225.22 cat info.txt
sk@192.168.225.22's password:
Welcome to OSTechNix blog
Modifier des fichiers distants avec Vim
Voir? J'ai ajouté un mot supplémentaire « blog » dans le fichier info.txt.
Parfois, vous avez peut-être modifié le port SSH par défaut pour des raisons de sécurité. Dans ce cas, mentionnez le port SSH comme ci-dessous.
vim scp://sk@192.168.225.22:2200/info.txt
Remplacez 2200 par votre numéro de port SSH.
Si vous n'avez pas d'accès ssh/scp, vous pouvez utiliser d'autres protocoles, par exemple ftp, comme ci-dessous.
vim ftp://user@remotesystem/path/to/file
Alors que se passe-t-il en arrière-plan ?
Lorsque vous modifiez le fichier distant depuis votre système local à l'aide de la commande suivante :
vim scp://sk@192.168.225.22/info.txt
Vous avez peut-être remarqué le résultat suivant au bas de votre éditeur Vim :
:!scp -q 'sk@192.168.225.22:info.txt' '/tmp/vsoDT6K/0.txt'
"/tmp/vsOLzGf/0.txt" 1L, 21C
Signification - La commande scp copie le fichier demandé à partir du système distant et l'enregistre dans le répertoire /tmp de votre système local, puis l'ouvre pour le modifier. Une fois la modification terminée, le fichier est téléchargé sur le système distant à l'aide de la commande scp.
Modifier des fichiers distants dans la session Vim
Si vous êtes déjà dans une session Vim, vous pouvez ensuite modifier les fichiers distants depuis votre système local comme ci-dessous.
Ouvrez le fichier depuis Vim dans un nouveau tampon en exécutant la commande suivante :
:e scp://sk@192.168.225.22/info.txt
Effectuez les modifications dans le fichier, appuyez sur la touche ESC et tapez :wq pour enregistrer et fermer le fichier.
Jetez un œil à la démo visuelle suivante.
Modifier les fichiers distants dans la session Vim dans un nouveau tampon
Comme vous pouvez le voir dans la sortie ci-dessus ;
- J'ai ouvert l'éditeur Vim depuis mon système local,
- Ensuite, j'ai ouvert le fichier distant nommé info.txt dans la session Vim dans un nouveau tampon,
- Et puis j'ai apporté quelques modifications au fichier,
- Enfin, j'ai enregistré les modifications et fermé le fichier (ESC et :wq).
Vous pouvez également ouvrir le fichier dans un nouvel onglet en exécutant :
:tabe scp://sk@192.168.225.22/info.txt
J'espère que cela t'aides. Je publierai d'autres conseils Vim dans les jours à venir. Continuez à visiter !
Lecture suggérée :
- Conseils Vim - Lire et écrire des fichiers distants avec Vim sous Linux
- Exécuter des commandes sur des systèmes Linux distants via SSH