Je dois éditer certains fichiers placés sur un serveur que je pourrais atteindre via ssh.
Je préférerais éditer ces fichiers en --- vim
sur mon poste de travail (je n'ai pas le droit de modifier les paramètres vim
sur le serveur distant). Parfois, je voudrais éditer un fichier avec sublime text
ou un autre éditeur GUI.
Bien sûr, je peux télécharger ces fichiers, les modifier localement et les télécharger à nouveau sur le serveur. Existe-t-il une solution plus élégante?
Pour ce faire, montez le dossier distant en tant que système de fichiers à l'aide de sshfs. Pour ce faire, d'abord quelques pré-requis:
# issue all these cmds on local machine
Sudo apt-get install sshfs
Sudo adduser <username> Fuse
Maintenant, faites le processus de montage:
mkdir ~/remoteserv
sshfs -o idmap=user <username>@<ipaddress>:/remotepath ~/remoteserv
Après cela, allez simplement dans le dossier monté et utilisez votre propre vim personnalisé local.
Vous pouvez le faire via scp
comme ceci:
vim scp://user@myserver[:port]//path/to/file.txt
Remarquez les deux barres obliques //
entre le serveur et le chemin, ce qui est nécessaire pour résoudre correctement le chemin absolu. (La première barre oblique est syntaxique, tandis que la deuxième barre oblique spécifie le répertoire racine de l'utilisateur distant, comme d'habitude. Pour commencer au répertoire personnel, vous feriez [:port]/~/path/to/file.txt
.) [:port]
est facultatif.
Ceci est géré par le plugin standard de vim's netrw.vim . Plusieurs autres protocoles sont pris en charge.
Selon ce que vous voulez dire lorsque vous dites que vous n'avez pas le droit de modifier les paramètres Vim, il peut y avoir un moyen d'utiliser Vim sur le serveur comme vous le souhaitez de toute façon. Si vous ne pouvez pas changer votre utilisateur .vimrc
(Parce que vous vous connectez en tant qu'utilisateur partagé, par exemple) mais vous pouvez toujours créer des fichiers, créez-le comme un fichier appelé, par exemple, Loom.vimrc
puis appelez Vim à l'aide du commutateur -u
:
vim -u ~/Loom.vimrc file_to_edit
Vous pouvez même alors utiliser un alias: alias vim='vim -u ~/Loom.vimrc'
Vous permettra d'utiliser Vim de la manière habituelle, et il chargera toujours votre fichier .vimrc
Personnalisé. Cet alias ne persistera pas après votre déconnexion, vous n'avez donc pas à vous soucier que quelqu'un d'autre utilise accidentellement votre Vim personnalisé.
Selon le nombre de fichiers et le type de fichiers que vous prévoyez de modifier, ce n'est peut-être pas exactement ce que vous voulez faire ici, mais je pense que cela mérite d'être mentionné. Si vous devez éditer des fichiers sur un serveur distant, mais que vous souhaitez utiliser tout ce que vous avez dans votre propre poste de travail, alors vous voudrez peut-être commencer à penser à utiliser une sorte de Révision Contrôle système dans vos machines. De cette façon, vous pouvez modifier vos copies locales sur votre propre machine à l'aide du logiciel de votre choix, valider les modifications, puis simplement mettre à jour les copies locales dans la machine de destination. En plus d'éditer les fichiers avec n'importe quel logiciel avec lequel vous vous sentez à l'aise, vous avez la valeur ajoutée d'avoir un historique des changements lié à chaque fichier, ce qui est toujours bien.
Voici une liste de Revision Control Software , juste au cas où.
Pour développer la réponse de M. Potts: Vous pouvez également faire ce qui précède, puis mettre quelque chose comme ça dans .bash_profile (ou tout ce que votre Shell utilise):
if [[ "$(who mom loves | awk ' { print $1 }' )" == "Loom" ]]; then
alias vim="vim -u ~/.Loom_vimrc"
fi
où Loom est votre original ID utilisateur sous lequel vous vous connectez.
Si vous vous connectez en tant que compte partagé (et non pas un compte individuel, alors Sudo est en cause, alors Von Neuman peut avoir pitié de votre âme car vous êtes perdu.
J'aurais mis cela dans un commentaire, mais je n'ai pas pu du tout formater le code.
Si vous avez déjà une session vim en cours d'utilisation
:silent e scp://user@myserver[:port]//path/to/file.txt
Le :silent
en face supprimera le Press Enter to Continue
message
et
e scp://user@myserver[:port]//path/to/file.txt
est la commande du mode Ex
pour modifier le fichier de remnote.
Testé avec BitVise SSHD
fonctionnant sous Windows 10 et utilisant VIM fonctionnant sur Ubuntu 16.04