2026/09/13

Neovim 원격 작업시 OS클립보드 사용 2가지 방법


Windows Neovim 원격터미널 작업시 OS클립보드 사용하는 2가지 방법.


Windows Terminal기준으로 설정/터미널 에뮬레이션/OSC 52가 클립보드에 쓸 수 있도록 허용을 체크 후 ~/.config/nvim/init.lua에 아래 내용 추가.

init.lua:
vim.g.clipboard = {
  name = 'OSC 52',
  copy = {
    ['+'] = require('vim.ui.clipboard.osc52').copy('+'),
    ['*'] = require('vim.ui.clipboard.osc52').copy('*'),
  },
  paste = {
    ['+'] = function() return vim.split(vim.fn.getreg('"'), '\n'), vim.fn.getregtype('"') end,
    ['*'] = function() return vim.split(vim.fn.getreg('"'), '\n'), vim.fn.getregtype('"') end,
  },
}
vim.opt.clipboard = "unnamedplus"

OS클립보드(+ 또는 *)와 레지스터(") 동시 쓰기가 되고 붙여넣을 때는 기본레지스터(")를 이용, 다른 Windows 앱에서 복사한 내용은 shift-ins 또는 ctl-v를 사용해 Neovim으로 붙여넣기.

터미널에 따라 오류가 있는 경우는 vim.opt.clipboard = ""를 해제한 후 OS클립보드로 복사시 "+yy를 이용하고 붙여넣기는 shift-ins 또는 ctl-v



다른 방법으로는 마우스로 터미널을 오른쪽 마우스로 드래그후 오른쪽 클릭하면 복사. 왼쪽 마우스 버튼 클릭은 클립보드 내용 붙여넣기.

Neovim에서 마우스 사용을 off해야 터미널 드래그가 작동해서 F1에 마우스와 줄번호, 컬러스킴 교체를 넣어 토글키로 사용. 복사할 때나 붙여넣기 할때 잠시 마우스등을 off하고 사용끝나면 다시 켜는 형태로 사용중. 컬러스킴 교체도 넣어주면 토글상태를 한 눈에 알아보기 좋아 함께 씀.
주로 명령창이나 실행결과를 보여주는 메시지창과 내부 터미널창 내용 복사하는데 이용하고 가끔 노멀모드에서 사용하기도 함.

init.lua:
vim.keymap.set('n', '<F1>', function()
  if vim.wo.number then
    vim.wo.number = false
    vim.wo.relativenumber = false
    vim.opt.mouse = ''
    vim.cmd.colorscheme('rose-pine')
  else
    vim.wo.number = true
    vim.wo.relativenumber = true
    vim.opt.mouse = 'a'
    vim.cmd.colorscheme('kanagawa')
  end
end, { desc = '줄번호/마우스/컬러스킴 토글' })

Windows Terminal은 "설정/상호작용/선택 영역을 클립보드에 자동으로 복사"를 켜두면 드래그만으로도 복사가 돼 편함.


** 분할화면을 쓸때 비활성창에도 컬러스킴등을 적용하려면 아래처럼 설정. 비활성창에 투명배경 적용하려면 hightlight NormalNC에 투명배경 항목 추가 지정.
vim.keymap.set('n', '<F1>', function()
  local on = not vim.wo.number
  for _, win in ipairs(vim.api.nvim_list_wins()) do
    vim.wo[win].number = on
    vim.wo[win].relativenumber = on
  end
  vim.opt.mouse = on and 'a' or ''
  vim.cmd.colorscheme(on and 'kanagawa' or 'rose-pine')
end, { desc = '줄번호/마우스/컬러스킴 토글' })

vim.keymap.set('n', '<F2>', function()
  local on = not vim.wo.wrap
  for _, win in ipairs(vim.api.nvim_list_wins()) do
    vim.wo[win].wrap = on
    vim.wo[win].signcolumn = on and 'no' or 'yes'
  end
  vim.cmd.colorscheme(on and 'kanagawa' or 'lytmode')
end, { desc = 'Wrap/Signcolumn/Colorscheme 토글' })