DaleSchool

레지스터와 클립보드

입문15분

학습 목표

  • 기본 레지스터와 번호 레지스터의 역할을 설명할 수 있다
  • 이름 붙인 레지스터를 사용할 수 있다
  • 시스템 클립보드와 연동할 수 있다

동작하는 코드

Vim에서 이 코드를 열어 보세요.

const firstName = "Alice";
const lastName = "Kim";
const fullName = firstName + " " + lastName;
  1. 첫 번째 줄에서 yy로 줄을 복사하세요.
  2. 두 번째 줄에서 dd로 줄을 삭제하세요.
  3. p를 누르면 — 방금 yy로 복사한 게 아니라, dd로 삭제한 줄이 붙여넣어져요.

왜 그럴까요? dd로 삭제한 텍스트가 기본 레지스터를 덮어썼기 때문이에요. Vim에서는 삭제도 레지스터에 저장돼요. 이 문제를 해결하려면 레지스터를 이해해야 해요.

직접 수정하기

같은 코드에서 이번엔 이름 붙인 레지스터를 사용해 봅시다.

const firstName = "Alice";
const lastName = "Kim";
const fullName = firstName + " " + lastName;
  1. 첫 번째 줄에서 "ayya 레지스터에 줄을 복사해요.
  2. 두 번째 줄에서 dd — 줄 삭제 (기본 레지스터에 저장됨).
  3. "apa 레지스터에서 붙여넣기. 이번엔 첫 번째 줄이 정확히 붙여넣어져요.

"a는 "a 레지스터를 사용하겠다"는 접두사예요. 서랍에 이름표를 붙이는 것과 같아요.

"왜?"

레지스터는 서랍이다

일반 에디터의 클립보드는 하나뿐이에요. 새로운 내용을 복사하면 이전 내용은 사라지죠. Vim은 **여러 개의 서랍(레지스터)**을 가지고 있어서, 여러 텍스트를 동시에 저장해 둘 수 있어요.

레지스터의 종류

레지스터이름설명
""기본 레지스터d, c, y 등의 결과가 저장됨
"0복사 레지스터y로 복사한 내용만 저장됨
"1~"9번호 레지스터삭제된 내용이 순서대로 밀려 들어감
"a~"z이름 레지스터사용자가 직접 지정해서 사용
"+시스템 클립보드OS 클립보드와 연동
"_블랙홀 레지스터저장 없이 삭제 (진짜 삭제)

기본 레지스터("")와 복사 레지스터("0)

이 구분이 중요해요.

yy  → "" 레지스터와 "0 레지스터 둘 다에 저장
dd  → "" 레지스터에 저장 (0은 건드리지 않음)

그래서 yy로 복사한 뒤 dd로 다른 줄을 삭제해도, "0p를 입력하면 원래 복사한 내용을 붙여넣을 수 있어요. "0 레지스터는 순수하게 복사(y)한 내용만 기억하거든요.

이름 붙인 레지스터 사용법

"a부터 "z까지 26개의 이름 붙인 레지스터를 자유롭게 쓸 수 있어요.

"ayy    → a 레지스터에 현재 줄 복사
"bdd    → b 레지스터에 현재 줄 삭제(저장)
"ap     → a 레지스터 내용 붙여넣기
"bp     → b 레지스터 내용 붙여넣기

대문자를 사용하면 기존 내용에 추가돼요.

"ayy    → a 레지스터에 첫 번째 줄 저장
"Ayy    → a 레지스터에 두 번째 줄 추가 (이어 붙이기)

레지스터 내용 확인하기

:registers (줄여서 :reg)를 입력하면 모든 레지스터의 내용을 확인할 수 있어요.

:reg        " 모든 레지스터 표시
:reg a      " a 레지스터만 표시
:reg ab0    " a, b, 0 레지스터만 표시

시스템 클립보드 연동

Vim과 다른 프로그램 사이에 텍스트를 주고받으려면 "+ 레지스터를 사용하세요.

"+y     → 시스템 클립보드로 복사 (Vim → 브라우저)
"+p     → 시스템 클립보드에서 붙여넣기 (브라우저 → Vim)
"+yy    → 현재 줄을 시스템 클립보드로 복사

브라우저에서 코드를 복사하고 Vim에 붙여넣거나, Vim에서 코드를 복사해서 슬랙에 붙여넣을 때 사용해요.

블랙홀 레지스터("_)

삭제는 하고 싶지만 레지스터를 오염시키고 싶지 않을 때 사용해요.

"_dd    → 현재 줄을 진짜 삭제 (어디에도 저장 안 됨)
"_diw   → 단어를 진짜 삭제

이전에 y로 복사해 둔 내용을 보존하면서 불필요한 텍스트를 삭제할 때 유용해요.

심화 학습

특수 레지스터들

Vim에는 읽기 전용 특수 레지스터도 있어요.

레지스터내용
"%현재 파일 이름
"#이전 파일 이름
".마지막으로 입력한 텍스트
":마지막으로 실행한 명령어
"/마지막으로 검색한 패턴

예를 들어 "%p를 입력하면 현재 파일의 이름이 붙여넣어져요.

레지스터를 활용한 코드 재배치

아래 코드의 줄 순서를 레지스터를 사용해서 바꿔 보세요.

third = "C"
first = "A"
second = "B"

목표 순서:

first = "A"
second = "B"
third = "C"

방법:

  1. first 줄에서 "ayy로 a 레지스터에 복사하세요.
  2. second 줄에서 "byy로 b 레지스터에 복사하세요.
  3. third 줄에서 "cyy로 c 레지스터에 복사하세요.
  4. 세 줄을 모두 삭제하세요 (3dd).
  5. "ap, "bp, "cp로 원하는 순서대로 붙여넣으세요.

도전: "+y로 결과를 시스템 클립보드에 복사한 뒤, 다른 프로그램에 붙여넣어 보세요.

question: "yy로 복사한 뒤 dd로 줄을 삭제했어요. 원래 복사한 내용을 붙여넣으려면?" options:

question: "Vim에서 복사한 텍스트를 브라우저에 붙여넣으려면 어떤 레지스터를 사용해야 하나요?" options:

question: "레지스터를 오염시키지 않고 텍스트를 삭제하려면?" options: