원격 서버에서 Neovim을 사용할 때 불편했던 점 중 하나는 클립보드였습니다. 로컬 환경에서는 Neovim의 설정과 xclip만으로 간단히 해결되지만, SSH를 통해 원격 서버에서 작업할 때는 복사한 내용을 로컬 PC의 클립보드에 넣기가 어렵습니다. 여러 시행착오 끝에 찾은 깔끔한 해결책을 소개합니다.

OSC52를 활용한 Neovim 클립보드 연동 구조도


환경 및 준비사항

  • 원격 서버: Ubuntu 기반 서버

  • 로컬 PC: Ubuntu 기반 GUI 환경

  • Neovim 설치 완료 (init.lua 설정 기준으로 설명합니다.)

1단계: 원격 서버에 xclip 설치

먼저 원격 서버에서 다음 명령어로 xclip을 설치합니다.

sudo apt install xclip

이 패키지는 Neovim이 시스템 클립보드와 소통하기 위해 필요합니다.

2단계: OSC52 프로토콜 설정

OSC52는 SSH 연결을 통해 로컬 클립보드로 직접 내용을 전송할 수 있게 하는 프로토콜입니다. Neovim에서 사용하기 위해 플러그인을 설치합니다.

  • 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
},

이 설정은 Neovim에서 복사(yank)한 내용을 OSC52 프로토콜을 통해 자동으로 로컬 클립보드로 전송합니다.

3단계: SSH 서버 설정

원격 서버의 SSH 데몬 설정에서 X11Forwarding 옵션을 활성화해야 OSC52가 정상 작동합니다.

/etc/ssh/sshd_config 파일을 열고 아래 설정을 확인하거나 추가합니다.

AllowTcpForwarding yes
X11Forwarding yes

변경 후 SSH 데몬을 재시작합니다.

sudo systemctl restart sshd

4단계: 로컬 SSH 클라이언트 설정

로컬 PC에서 SSH로 서버에 접속할 때 X11 Forwarding을 활성화해야 합니다. 이를 위해 SSH 설정파일에 추가합니다.

~/.ssh/config 파일:

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

이제 SSH로 접속할 때 간단히 ssh myserver 명령어를 사용하면 됩니다.

5단계: Neovim 클립보드 옵션 설정

마지막으로 Neovim이 클립보드를 사용하도록 설정합니다. init.lua 파일에 추가합니다.

vim.o.clipboard = 'unnamedplus'

사용 방법

이제 모든 설정이 끝났습니다. Neovim에서 내용을 복사할 때는 Visual Mode(v)로 영역 선택 후 y 키를 누르면 복사한 내용이 자동으로 로컬 PC 클립보드에 저장됩니다.

이제 원격 서버의 Neovim에서 복사한 내용을 로컬의 브라우저나 메모장에 바로 붙여넣을 수 있습니다.


처음에는 복잡하게 느껴졌던 과정이지만, 한 번 설정해두면 매우 편리합니다. 원격 개발 환경을 자주 사용하신다면 꼭 설정해보시길 추천합니다.