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

vim (or nvim) 에서의 register
Vim과 Neovim에서 레지스터(register) 는 텍스트를 저장하고 조작하는 데 사용되는 일종의 저장소(or buffer)임.
이 문서는 unnamed("") 레지스터와 clipboard("+) 레지스터, primary selecton ("*) 레지스터의 용도와 차이점을 설명함.
더불어 numbered register와 naemd 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에 저장됨.
- 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에 저장되어
- 이후 마우스 가운데 버튼으로 붙여넣을 수 있음.
- 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
'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 |