Search

Null Buffer 설정 및 해제

Tags
nvim
null-buffer
black-hole
clipboard
Created
2024/05/01 17:44
Created time
2024/05/01 08:45
category
vim

개요

간단히 터미널 상에서 작업을 할 때는 편의상 Nvim을 자주 이용했음
Vim류의 에디터에서 노말모드의 삭제 명령어는 삭제와 동시에 복사라는 특징을 갖고 있는데, 이 때 한 줄 지우기, 한 글자 지우기, 한 단어 지우기 등을 수행할 때마다 클립보드에 복사되는 것이 꽤 큰 스트레스로 느껴졌음
** 예를 들어, planner에서 문구 수정을 위해 ner을 지우려고 x키를 3번 눌렀다간 클립보드에 n, e, r이 남는 기적을 보곤 했음
이러한 이유로 Null Buffer를 지정해서, 삭제 후 복사될 때 클립보드가 아니라 Null Buffer로 가게끔, 복사가 되지 않도록 설정했었음
하지만 한 줄 지우기 시에는 복사되는 설정이 경험상 더 편하다는 것을 느끼고 설정 파일을 다시 작성하면서, 한 글자 지우기 등은 Null Buffer를 이용하고 싶어서 해당 방법을 탐색

방법

remap과 noremap

간단하게만 remap과 noremap에 대해 언급하자면, remap은 단축키를 Recursion하게 맵핑하는 것이고, noremap은 이러한 재귀 형태의 맵핑을 하지 않겠다는 것
아래는 remap의 예시로, ~/.config/nvim/init.vim에 아래와 같이 기재 후, copy this line에서 x를 누르면 클립보드에 복사되는 것을 볼 수 있음
nmap x y nmap y z nmap z yy
Bash
복사
remap은 예기치 못한 재귀를 발생할 수 있으므로, 대체로 noremap을 이용하는 것이 안전
** 설정 파일은 한 번 설정하고 끝이 아니라 지속적인 갱신을 하면서 이전 설정을 잊을 수 있으니 무한 재귀에 빠질 수 있음

Null Buffer 설정

클립보드에 복사되지 않는 설정은 Null Buffer를 이용한다고 했는데, 정확하게는 블랙홀 레지스터를 이용하는 것
조금 더 자세하게만 풀자면 Vim류의 에디터에는 레지스터라는 개념이 있고, 레지스터 종류 중에는 블랙홀 레지스터가 있음
블랙홀 레지스터에 텍스트를 작성하게 되면 아무런 일이 발생하지 않고, 블랙홀 레지스터에서 텍스트를 읽으려고 하면 아무 값도 반환되지 않음
이 때 레지스터의 이름은 "로 지정할 수 있는데, 블랙홀 레지스터의 심볼은 _로 사용
따라서 x로 한 글자를 지우는 노말모드의 명령어를 "_x와 같이 지정하면 한 글자를 지운 결과는 블랙홀 레지스터로 가면서 클립보드에 저장되지 않음
따라서 아래 구문과 같이 노말모드의 한 글자 지우기와, 보기모드의 한 줄 지우기 시에 클립보드로 복사되는 것을 막도록 설정
nnoremap x "_x vnoremap d "_d
Plain Text
복사

참고