Lorsque j'utilisais Neovim sur un serveur distant, l'un des inconvénients était le presse-papiers. Dans un environnement local, cela peut être facilement résolu avec les paramètres de Neovim et xclip, mais lors du travail sur un serveur distant via SSH, il est difficile d'insérer ce que j'ai copié dans le presse-papiers de mon PC local. Voici une solution simple que j'ai trouvée après plusieurs essais.

Schéma d'intégration du presse-papiers Neovim utilisant OSC52


Environnement et prérequis

  • Serveur distant : Serveur basé sur Ubuntu

  • PC local : Environnement GUI basé sur Ubuntu

  • Neovim installé (les explications se basent sur la configuration init.lua.)

Étape 1 : Installer xclip sur le serveur distant

Tout d'abord, installez xclip sur le serveur distant avec la commande suivante.

sudo apt install xclip

Ce paquet est nécessaire pour que Neovim puisse communiquer avec le presse-papiers du système.

Étape 2 : Configurer le protocole OSC52

OSC52 est un protocole qui permet d'envoyer directement des contenus vers le presse-papiers local via une connexion SSH. Pour l'utiliser avec Neovim, installez un plugin.

  • Ajoutez à votre fichier de configuration Neovim (init.lua) :
{
    'ojroques/nvim-osc52',
    config = function()
        require('osc52').setup()
        local function copy()
            if vim.v.event.operator == 'y' and vim.v.event.regname == '+' then
                require('osc52').copy_register('+')
            end
        end
        vim.api.nvim_create_autocmd('TextYankPost', {callback = copy})
    end
},

Cette configuration permet d'envoyer automatiquement le contenu copié (yanké) dans Neovim vers le presse-papiers local via le protocole OSC52.

Étape 3 : Configurer le serveur SSH

Pour que OSC52 fonctionne correctement, l'option X11Forwarding doit être activée dans les paramètres du démon SSH du serveur distant.

Ouvrez le fichier /etc/ssh/sshd_config et vérifiez ou ajoutez les paramètres suivants.

AllowTcpForwarding yes
X11Forwarding yes

Après avoir effectué les modifications, redémarrez le démon SSH.

sudo systemctl restart sshd

Étape 4 : Configurer le client SSH local

Lorsque vous vous connectez au serveur via SSH depuis votre PC local, vous devez activer le X11 Forwarding. Ajoutez cela à votre fichier de configuration SSH.

Fichier ~/.ssh/config :

Host myserver
    HostName server-address.com
    User myuser
    ForwardX11 yes
    Port 2222
    IdentityFile ~/.ssh/id_rsa

Maintenant, lorsque vous vous connectez via SSH, utilisez simplement la commande ssh myserver.

Étape 5 : Configurer les options de presse-papiers de Neovim

Enfin, configurez Neovim pour utiliser le presse-papiers. Ajoutez cela au fichier init.lua.

vim.o.clipboard = 'unnamedplus'

Comment utiliser

Voilà, toutes les configurations sont terminées. Lorsque vous copiez du contenu dans Neovim, sélectionnez la zone en mode visuel (v) et appuyez sur la touche y pour que ce que vous avez copié soit automatiquement enregistré dans le presse-papiers de votre PC local.

Maintenant, vous pouvez coller directement le contenu copié depuis Neovim sur le serveur distant dans votre navigateur local ou votre bloc-notes.


Bien que cela puisse sembler complexe au début, une fois configuré, c'est très pratique. Je vous recommande de le mettre en place si vous utilisez fréquemment un environnement de développement distant.