clipboard 와 mouse selection 사용하기 (Neovim)
vim에서도 설정이 비슷하지만, 우선 neovim으로 테스트를 함.
문제점
vi에서 yank등을 사용하여 잘라낸 content들은 vi 내에서는 p를 통해 붙이기가 되지만,
다른 어플리케이션에 붙여지지 않는다.
"+y 나 "+p 등의 clipboard를 활용하는 레지스터로의 yank와 paste가 제대로 동작안함.
2025.08.02 - [utils] - [Utils] vim (or nvim)에서의 register
[Utils] vim (or nvim)에서의 register
과거 글 "https://ds31x.tistory.com/310"을 실수로 삭제하여 재작성한 글임.vim (or nvim) 에서의 registerVim과 Neovim에서 레지스터(register) 는 텍스트를 저장하고 조작하는 데 사용되는 일종의 저장소(or buffer)
ds31x.tistory.com
해결방안
이를 위해선 clipboard에 해당 내용이 들어가도록 해야하는데 이 경우 몇가지 설정이 필요하다.
우선 설치된 vim (or nvim)이 clipboard 와의 연동이 가능하도록 compile된 버전이어야 하고,
이는 vim의 경우, vim --version (또는 명령어 모드에서 :version 입력하고 엔터)을 통해 +clipboard 라는 표시가 되어있는지로 확인 가능하다.

neovim은 --version으로 동작시켜도 해당 정보가 안 나온다.
이 경우엔 nvim을 수행하고 명령어 모드에서 :checkhealth 를 입력하고 엔터를 치면 확인 가능함.

init.vim을 이용하는 방법 (.vimrc 와 호환해서 쓰는 경우)
위와 같이 clipboard가 지원됨을 확인하고 나서 .vimrc (for vim)나 init.vim (for nvim)등에 다음의 설정을 추가한다.
# Linux
set mouse=nvi
set clipboard=unnamedplus, unnamed
# # macOS
# set mouse=nvi
# set clipboard=unnamedplus
- 위의 라인은 mouse를 이용하여 normal, visula, insert 모드에서 copy and paste 를 할 영역을 지정하게 해주고,
- 아래 설정은 clipboard에 yank나
ctrl + c(orcmd + c)등을 통해 vi의 내용을 복사할 수 있게 해주는 것임.- 엄밀하게는 기본 레지스터를 clipboard로 지정하도록 해준 것임.
- neovim은 맥os에서는 pbcopy, pbpaste 를 사용하여 clipboard에 접근. (linux의 경우, xclip 또는 xsel)
다음의 register 를 참고하라.
- unnamedplus 레지스터→ "+ → Ctrl+C / Ctrl+V용 클립보드
- unnamed 레지스터→ "* → 마우스로 드래그 선택(primary selection)
참고로 macOS는 primary가 없이 pbcopy와 pbpaste가 시스템 클립보드 만 사용: unnamedplus만 기재하는게 깔끔.
OS별 clipboard 관련된 명령어는 다음을 참고:
init.lua 를 사용하는 방법(권장함)
macOS에선 init.lua에 다음만 설정하면 문제 없음:
vim.opt.mouse = "nvi"
vim.opt.clipboard = "unnamedplus"
Linux에서 xclip을 이용하는 방식은 다음의 접은글 참고:
다음은 wsl에서 win32yank.exe 를 사용하는 방법임.
1. cmd.exe 나 Windows PowerShell에서 winget으로 win32yank.exe를 설치
winget install equalsraf.win32yank
2. WSL의 /usr/local/bin/ 디렉토리에 win32yank.exe 에 대한 symbolic link를 생성
sudo ln -s /mnt/c/Users/<USERNAME>/AppData/Local/Microsoft/WinGet/Packages/equalsraf.win32yank_*/win32yank.exe \
/usr/local/bin/win32yank.exe
- 이 후 WSL에서
which win32yank.exe를 수행하여 제대로 찾는지 확인할 것.
3. neovim에서 :checkhealth로 다음을 확인할 것:

4. 이 후, ~/.config/nvim/init.lua 파일에 다음의 스크립트 코드를 추가
-- 1. 기본 옵션들
vim.opt.mouse = "nvi"
vim.opt.clipboard:append({"unnamedplus", "unnamed"})
-- 2. clipboard provider (for WSL)
vim.g.clipboard = {
name = "win32yank",
copy = {
["+"] = "cmd.exe /c win32yank.exe -i --crlf",
["*"] = "cmd.exe /c win32yank.exe -i --crlf",
},
paste = {
["+"] = "cmd.exe /c win32yank.exe -o --lf",
["*"] = "cmd.exe /c win32yank.exe -o --lf",
},
cache_enabled = 0,
}
win32yank.exe는cmd.exe에서 수행되어야 함.-i옵션은 클립보드에 내용을 보낼 때이고-o옵션은 클립보드의 내용을 가져올 때임.--crlf는 carriage return과 line feed를 의미 (Windows로 붙여넣기 이니.)--lf는 line feed를 의미 (Linux로 붙여넣기이니)
win32yank.exe 관련하여 참고한 자료는 다음과 같음 (렉이 걸린다고 하는데... 내 경우엔 못 느낌. 개선된듯):
추가사항
개인적으로 neovim을 사용하지만
기존의 vim과 동일한 설정파일을 사용하고 있다 (neovim 고유의 설정은 잘 모르는터라...)
다음의 방법은 lua 스크립트를 이용하지 않는 경우엔 vim과 neovim을 동일 설정으로 동작하게 해준다.
(WSL의 경우엔 clipboard를 쓰려면... lua 스크립트가 필요하므로 비추천임)
맥 os의 경우 ~/.config/nvim/init.vim 파일을 다음과 같이 편집하고,
~/.vimrc 에 원하는 설정을 기재하면 neovim과 vim에 같이 적용됨.
set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
source ~/.vimrc
runtimepath의 맨 앞(^) 에 ~/.vim을 추가하고 runtimepath의 맨 뒤에 ~/.vim/after 추가
packpath를 runtimepath와 완전히 동일하게 설정
- runtimepath : 설정/스크립트 검색 경로
- packpath : 패키지 플러그인(pack/*/start) 검색 경로
읽어보면 좋은 URLs
xclip linux 클립보드 / vim 시스템 클립보드 / tmux 클립보드
xclip, vim 시스템 클립보드 사용
velog.io
https://stackoverflow.com/questions/3961859/how-to-copy-to-clipboard-in-vim
How to copy to clipboard in Vim?
Is it possible to copy to clipboard directly from Vim? yy only copies stuff to Vim's internal buffer. I want to copy to the OS's clipboard. Is there any such command in Vim or you can only yank stuff
stackoverflow.com
https://netsarang.atlassian.net/wiki/spaces/KRSUP/pages/27263015/vi+vim+yank
vi(vim)에서 복사(yank)한 문자열을 윈도우 클립 보드에 넣기 - 기술지원 - NetSarang Computer
Xshell을 통하여 텍스트 기반의 vi(vim)을 사용할 때 y(yank) 명령을 사용하여 문자열을 복사하는 경우가 있습니다. 이 때 복사된 문자열은 vim의 레지스터에 등록될 뿐 Xshell이 구동 중인 윈도우 클립
netsarang.atlassian.net
https://80000coding.oopy.io/6e7153c0-6a99-41b2-b318-cc591a38d78f
[Vim] Vim에서 마우스 드래그로 텍스트 복붙하기
Vim은 마우스로 긁어서 복붙이 외 않되?
80000coding.oopy.io
'utils' 카테고리의 다른 글
| [vscode] 기본 terminal 변경. (0) | 2024.03.12 |
|---|---|
| [linux] bat (0) | 2024.01.30 |
| [vim] Neovim 설치 : A Project that seeks to extend Vim. (0) | 2024.01.01 |
| [Tool] DeepL 사용하기. (1) | 2023.12.09 |
| [Util] curl 간단사용법 정리 : web의 자원 다운로드하기. (0) | 2023.09.29 |