본문 바로가기
목차
utils

[Utils] vim (or nvim)에서의 register

by ds31x 2025. 8. 2.
728x90
반응형

과거 글 "https://ds31x.tistory.com/310"을 실수로 삭제하여 재작성한 글임.

https://www.kpadenou.net/blogs/post/vim_registers

vim (or nvim) 에서의 register

Vim과 Neovim에서 레지스터(register) 는 텍스트를 저장하고 조작하는 데 사용되는 일종의 장소(or buffer)임.

 

이 문서는 unnamed("") 레지스터와 clipboard("+) 레지스터, primary selecton ("*) 레지스터의 용도와 차이점을 설명함.

더불어 numbered registernaemd register도 추가로 설명함.


unnamed 레지스터 ("")

  • 기본 레지스터:
    • unnamed 레지스터는 기본 레지스터로,
    • 특별히 다른 레지스터를 지정하지 않은 경우에 사용됨.
  • 기본 동작:
    • 텍스트를 얀크(yank)하거나 삭제(delete)할 때
    • unnamed 레지스터가 사용됨.
    • 이때 텍스트는 Vim 내부의 unnamed 레지스터에 저장됨.
  • 기본적으로는 동기화 없음:
    • 기본적으로 unnamed 레지스터는 system clipboard와 동기화되지 않음.
    • 따라서 Vim에서 yank한 텍스트는 다른 애플리케이션에서 사용할 수 없고,
    • 반대로 다른 애플리케이션에서 복사한 텍스트는 Vim의 unnamed 레지스터에 직접 접근할 수 없음.

clipboard 레지스터 ("+)

  • 시스템(os) 클립보드와 연동:
    • clipboard 레지스터는 os system clipboard와 직접 연동됨.
    • 따라서 이 레지스터를 사용하여 yank한 텍스트는 system clipboard에 저장되고,
    • os system clipboard의 내용을 Vim에 붙여넣을 수 있음.
  • 명시적 사용:
    • clipboard 레지스터를 사용하려면 명시적으로 "+ 레지스터를 지정해야 함.
    • 예를 들어 "+y 명령을 사용하여 텍스트를 yank하면 해당 텍스트는 system clipboard에 저장됨.
  • 설정 파일을 통한 기본 사용:
    • set clipboard+=unnamedplus 설정을 init.vim 또는 .vimrc 파일에 추가하면,
      • 기존 clipboard 설정에 추가해서 (+=),
      • 모든 yank 및 delete 작업의 unnamed 레지스터와 clipboard register가 자동으로 동기화됨.
        • 만약 =를 사용하면
        • 즉, set clipboard=unnamedplus이면, clipboard에 대한 기존 설정은 무시되고
        • unnamed 레지스터와 clipboard 레지스터가 자동으로 동기화됨.
      • +=를 권장.
    • 이를 통해 Vim과 시스템 클립보드 간의 텍스트 교환이 원활하게 이루어짐.

primary selection 레지스터 ("*)

  • 마우스 드래그와 연동:
    • Primary Selection 레지스터는 X Window System(주로 Linux)의 Primary Selection과 연동됨.
    • 따라서 마우스로 드래그하여 선택한 텍스트가 자동으로 이 레지스터에 저장됨.
    • 이 레지스터의 내용은 마우스 가운데 버튼으로 붙여넣을 수 있음.
  • 명시적 사용:
    • Primary Selection 레지스터를 사용하려면 명시적으로 "* 레지스터를 지정해야 함.
    • 예를 들어 "*y 명령을 사용하여 텍스트를 yank하면,
      • 해당 텍스트는 Primary Selection에 저장되어
      • 이후 마우스 가운데 버튼으로 붙여넣을 수 있음.
  • 설정 파일을 통한 기본 사용:
    • set clipboard+=unnamed 설정을 init.vim 또는 .vimrc 파일에 추가하면,
      • 기존 clipboard 설정에 추가해서 (+=),
      • 모든 yank 및 delete 작업의 unnamed 레지스터와 Primary Selection 레지스터가 자동으로 동기화됨.
        • 만약 =를 사용하면,
        • 즉, set clipboard=unnamed이면, clipboard에 대한 기존 설정은 무시되고
          unnamed 레지스터와 Primary Selection 레지스터가 자동으로 동기화됨.
      • +=를 권장.
    • 이를 통해 Vim과 마우스 드래그-중간 버튼을 이용한 텍스트 교환이 원활하게 이루어집니다.

그 외 많이 이용되는 레지스터: numbered register and named register

"n (여기서 n[0-9]의 숫자) 로 표기되는 numbered register는 삭제 내역을 자동으로 기록하는 "delete history" stack.

"x (여기서 x[a-zA-Z]의 영어대소문자) 로 표기되는 named register는 사용자가 yank(y)하거나 잘라내기(d)한 내용을 자유롭게 저장하는 "manual register"임.

  • "n 에서 "0에 가장 최근에 잘라낸(삭제한) 내용이 기록됨 (새로 추가되면 번호가 하나씩 밀려감)
  • "x 에서 x를 영어 대문자를 사용한 경우, 해당 named register에 기존의 내용을 지우지 않고 현재의 내용이 addition이 이루어짐.
  • "x 에서 영어 소문자인 경우엔, 새로 덮어쓰는 것과 차이가 있음을 주의할 것.

요약

다음의 설정을 init.vim 혹은 .vimrc 파일에 추가해 주자.

set clipboard+=unnamedplus,unnamed

# 또는
# set clipboard+=unnamed
# set clipboard+=unnamedplus
  • Unnamed Register (""):
    • Vim 내부에서 기본적으로 사용되는 레지스터로,
    • 아무 설정이 없을 경우, system clipboard 등과 동기화되지 않음.
  • Clipboard Register ("+):
    • system clipboard와 연동되는 레지스터로,
    • 명시적으로 지정하거나 설정 파일을 통해 기본 사용하도록 설정할 수 있음.
  • Primary Selection Register ("*):
    • 마우스 드래그로 복사되는 레지스터 (Linux에서 사용됨)로,
    • 명시적으로 지정하거나 설정 파일을 통해 기본 사용하도록 설정할 수 있음.

같이 보면 좋은 자료들

https://coldmater.tistory.com/218

 

06 Vim 기본 - 복사하기와 붙여넣기 그리고 레지스터

컴퓨터의 세계에서 Copy & Paste 의 개념만큼 대중적인 것도 없을테다. ctrl + c, ctrl + v 는 마치 대명사처럼 우리에게 흔한 일상이 되어버렸다. copy & paste 라는 개념이 래리 테슬러가 1973~1976 년 무렵에

coldmater.tistory.com

 

2024.01.05 - [utils] - [vim] clipboard 와 mouse selection 사용하기 : Neovim

 

[vim] clipboard 와 mouse selection 사용하기 : Neovim

clipboard 와 mouse selection 사용하기 : Neovim vim에서도 설정이 비슷하지만, 우선 neovim으로 테스트를 함.vi에서 yank등을 사용하여 잘라낸 content들은 vi 내에서는 p를 통해 붙이기가 되지만, 다른 어

ds31x.tistory.com

 

2024.06.02 - [개발환경] - [vscode] nvim (neovim) 확장 에서 clipboard 사용.

 

[vscode] nvim (neovim) 확장 에서 clipboard 사용.

nvim에서 yank한 내용을 os의 clipboard에 복사되도록 하기 위해선 다음의 설정이 필요함. 1.cmd + ` 를 통해 system setting을 열고,2.검색창에 nvim clipboard 를 입력하여 Use System Clipboard 항목을 찾음.3.해당 항

ds31x.tistory.com

 

2025.01.20 - [utils] - [vim] 마우스 설정

 

[vim] 마우스 설정:

nvim 과 vim에서의 마우스 설정:nvim과 vim (이하 vim)에서는 마우스 사용을 제어하는 mouse 옵션을 제공함. 이 설정은 터미널에서 vim을 사용할 때 마우스 이벤트를 vim이 처리할 수 있도록 해 줌.기본 설

ds31x.tistory.com


 

728x90

'utils' 카테고리의 다른 글

ssh 사용 방법  (2) 2025.08.05
MacTex-jupyter notebook을 pdf로 export  (0) 2025.07.20
[ipython] Shortcut (단축키) - readline editors  (0) 2025.04.09
[Tool] Builder System (or Packaging System)  (0) 2025.04.06
[vscode] Refactoring  (0) 2025.04.02