Eines der unangenehmsten Dinge beim Arbeiten mit Neovim auf einem entfernten Server war die Zwischenablage. In der lokalen Umgebung lässt sich dies einfach mit den Einstellungen von Neovim und xclip lösen, aber beim Arbeiten über SSH auf einem entfernten Server ist es schwierig, die kopierten Inhalte in die lokale Zwischenablage einzufügen. Hier präsentiere ich eine saubere Lösung, die ich nach mehreren Versuchen gefunden habe.

Neovim Zwischenablage-Anbindung mit OSC52


Umgebung und Voraussetzungen

  • Entferner Server: Ubuntu-basierter Server

  • Lokaler PC: Ubuntu-basierte GUI-Umgebung

  • Neovim ist installiert (die Erklärung basiert auf der init.lua-Konfiguration).

Schritt 1: Installation von xclip auf dem entfernten Server

Zuerst installieren Sie xclip auf dem entfernten Server mit dem folgenden Befehl.

sudo apt install xclip

Dieses Paket wird benötigt, damit Neovim mit der Systemzwischenablage kommunizieren kann.

Schritt 2: Konfiguration des OSC52-Protokolls

OSC52 ist ein Protokoll, das es ermöglicht, Inhalte direkt über die SSH-Verbindung in die lokale Zwischenablage zu übertragen. Um es mit Neovim zu verwenden, müssen Sie ein Plugin installieren.

  • Fügen Sie Folgendes zur Neovim-Konfigurationsdatei (init.lua) hinzu:
{
    '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
},

Diese Einstellung sorgt dafür, dass die Inhalte, die in Neovim kopiert werden, automatisch über das OSC52-Protokoll in die lokale Zwischenablage übertragen werden.

Schritt 3: Konfiguration des SSH-Servers

Um OSC52 ordnungsgemäß funktionieren zu lassen, müssen Sie in den SSH-Daemon-Einstellungen des entfernten Servers die Option X11Forwarding aktivieren.

Öffnen Sie die Datei /etc/ssh/sshd_config und überprüfen oder fügen Sie die unten stehenden Einstellungen hinzu.

AllowTcpForwarding yes
X11Forwarding yes

Starten Sie anschließend den SSH-Daemon neu.

sudo systemctl restart sshd

Schritt 4: Konfiguration des lokalen SSH-Clients

Wenn Sie sich über SSH mit dem Server verbinden, müssen Sie X11 Forwarding aktivieren. Fügen Sie dazu Folgendes zur SSH-Konfigurationsdatei hinzu.

~/.ssh/config Datei:

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

Jetzt können Sie einfach den Befehl ssh myserver verwenden, um sich zu verbinden.

Schritt 5: Konfiguration der Neovim-Zwischenablageoptionen

Zuletzt stellen Sie Neovim so ein, dass es die Zwischenablage verwendet. Fügen Sie Folgendes zur init.lua Datei hinzu.

vim.o.clipboard = 'unnamedplus'

Verwendung

Nun sind alle Einstellungen abgeschlossen. Wenn Sie Inhalte in Neovim kopieren, wählen Sie den Bereich im Visualmodus (v) aus und drücken Sie die y-Taste, dann wird der kopierte Inhalt automatisch in die lokale PC-Zwischenablage gespeichert.

Sie können jetzt den Inhalt, den Sie in Neovim auf dem entfernten Server kopiert haben, sofort in den lokalen Browser oder in den Notizblock einfügen.


Obwohl der Prozess anfangs kompliziert erscheinen mag, ist er sehr praktisch, sobald er einmal eingerichtet ist. Wenn Sie häufig eine entfernte Entwicklungsumgebung verwenden, empfehle ich dringend, diese Konfiguration vorzunehmen.