diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 2514f9e..d39ae7d 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,2 +1,3 @@ --- bootstrap lazy.nvim, LazyVim and your plugins +-- early setup: make sure custom clipboard OSC 52 is registered first, options.lua manages default registry +require("config.clipboard") require("config.lazy") diff --git a/.config/nvim/lua/config/clipboard.lua b/.config/nvim/lua/config/clipboard.lua new file mode 100644 index 0000000..79b136f --- /dev/null +++ b/.config/nvim/lua/config/clipboard.lua @@ -0,0 +1,22 @@ +-- ~/.config/nvim/lua/config/clipboard.lua +local function osc52_copy(lines) + local data = table.concat(lines, "\n") + local b64 = vim.fn.system("base64 -w0", data) + vim.fn.chansend(vim.v.stderr, "\x1b]52;c;" .. b64 .. "\x07") +end + +vim.g.clipboard = { + name = "OSC 52", + copy = { + ["+"] = osc52_copy, + ["*"] = osc52_copy, + }, + paste = { + ["+"] = function() + return vim.split(vim.fn.getreg("+"), "\n") + end, + ["*"] = function() + return vim.split(vim.fn.getreg("*"), "\n") + end, + }, +} diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua index 3ea1454..77a0560 100644 --- a/.config/nvim/lua/config/options.lua +++ b/.config/nvim/lua/config/options.lua @@ -1,3 +1,4 @@ -- Options are automatically loaded before lazy.nvim startup -- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua -- Add any additional options here +vim.opt.clipboard = "unnamedplus" diff --git a/.tmux.conf b/.tmux.conf index 2abe6bd..6e35dc6 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -1,12 +1,15 @@ set -g default-command /usr/bin/zsh -set -g default-terminal "xterm-256color" +set -g default-terminal "tmux-256color" # disable mouse mode (to use selection mode from current terminal) set-option -g mouse off # copy mode setw -g mode-keys vi +set -g set-clipboard on +set -g allow-passthrough on + bind-key -T copy-mode-vi 'v' send -X begin-selection bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel