From cc3dafbaf0eb5506bb3279e1a898692f79a5519a Mon Sep 17 00:00:00 2001 From: Leonid Grishenkov Date: Mon, 20 Jul 2026 20:06:58 +0000 Subject: [PATCH] feat(nvim): add helper to access system clipboard from container/remote host Main flag - NVIM_CLIPBOARD env variable --- nvim/.config/nvim/lua/config/options.lua | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/nvim/.config/nvim/lua/config/options.lua b/nvim/.config/nvim/lua/config/options.lua index 450ee1f..c84aba1 100644 --- a/nvim/.config/nvim/lua/config/options.lua +++ b/nvim/.config/nvim/lua/config/options.lua @@ -23,3 +23,31 @@ vim.g.snacks_animate = false -- display all thing that are usually concealed (such as backticks in Markdown files) vim.opt.conceallevel = 0 +-- OSC52 clipboard integration for remote/container environments. +-- Set NVIM_CLIPBOARD=osc52 (e.g. in your Dockerfile, docker-compose, or .bashrc) +-- to enable clipboard bridging over SSH and inside containers via terminal escape +-- sequences. Requires Neovim 0.10+ and a terminal that supports OSC52 +-- (iTerm2, WezTerm, Alacritty, Kitty, Ghostty, Windows Terminal, etc.) +if vim.fn.has("nvim-0.10") == 1 and vim.env.NVIM_CLIPBOARD == "osc52" then + local function paste() + return { + vim.split(vim.fn.getreg(""), "\n"), + vim.fn.getregtype(""), + } + end + + vim.g.clipboard = { + name = "OSC 52", + copy = { + ["+"] = require("vim.ui.clipboard.osc52").copy("+"), + ["*"] = require("vim.ui.clipboard.osc52").copy("*"), + }, + paste = { + ["+"] = paste, + ["*"] = paste, + }, + } +end + +-- Use the system clipboard for all yank/delete/change operations +vim.opt.clipboard = "unnamedplus"