레지스터에 데이터 저장하기
레지스터는 데이터를 저장해서 다시 사용하는 용도이므로, 레지스터에 데이터를 저장하고 저장된 데이터를 붙여넣기 하는 법을 알면 레지스터 사용법은 전부 알게 된다. 이번에는 우선 레지스터에 데이터를 저장하는 방법을 알아보자.
레지스터에 데이터를 저장할 때는 명령 모드에서 다음과 같은 형식으로 명령어를 입력한다.
큰따옴표(")+레지스터명+복사 및 삭제 명령어
복사 명령은 y를 이용한 복사 관련 명령어들고 삭제 명령은 d나 x를 이용한 삭제 관련 명령들이다. (일일이 그 많은 명령어들을 나열하진 않겠다.)
사용자 임의로 데이터를 저장할 수 있는 레지스터는 읽기 전용인 "/, ":, "., "%, "# 레지스터를 제외한 나머지 레지스터들이다.
읽기 전용 레지스터를 제외한 모든 레지스터에 사용자가 임의로 데이터를 저장할 수 있지만 알파벳 레지스터("a~"z)를 사용하는 것이 바람직하다. 왜냐하면 알파벳 레지스터 말고 다른 레지스터들은 자동으로 데이터가 저장되기 때문에 편집을 하면 수시로 데이터가 변경될 수밖에 없으므로 사용자가 원하는 데이터를 계속 유지하기 어렵기 때문이다.
알파벳("a~"z) 레지스터에 저장하기
알파벳("a~"z) 레지스터에 데이터를 저장할 때, 레지스터를 소문자(a~z)와 대문자(A~Z)로 지정할 수 있다. 즉, "a와 "A는 똑같은 레지스터를 지칭한다. 하지만 데이터를 저장하는 방식을 다르게 한다. 사례를 살펴보자.
다음과 같은 두 개의 행에 작성된 데이터로 이루어진 텍스트가 있고 커서는 첫 번째 행에 있는 문서가 있다고 해보자.
aaa
AAA
첫 번째 행에 커서를 두고 명령 모드에서 "cdd 라고 입력하면 "c 레지스터에 첫 번째 행 전체가 복사되어 들어간다. 그리고 텍스트는 AAA만 남고 커서는 첫 글자에 위치된다.
aaa → 명령 모드에서 "cdd 라고 입력(현재 행을 삭제해서 "c 레지스터에 저장하라는 명령어)
AAA
↓
AAA → 첫 번째 행이 지워지고 AAA라고 되어 있는 한 개의 행만 남고 커서는 첫 글자에 위치함
이 상황에서 :reg 명령으로 레지스터에 저장된 내용을 살펴보면 aaa가 있었던 행이 삭제되면서 그 행의 데이터가 "c 레지스터에 다음과 같이 저장된 것을 확인할 수 있다.
"c aaa^J
※ ^J는 개행 문자로 레지스터에는 ^J로 표시되어 있지만 실제로 붙여넣기를 하면 줄바꿈이 일어난다.
이제 남은 행에서 "cyy라고 명령하고 :reg 명령으로 레지스터에 저장된 내용을 확인하면 기존에 "c 레지스터에 저장되어 있던 aaa^J가 삭제되고 AAA^J로 바뀐 것을 확인할 수 있다.
AAA → 명령 모드에서 "cyy라고 명령어 입력(현재 행을 복사해서 "c 레지스터에 저장하라는 명령어)
"c AAA^J → :reg 명령으로 확인한 "c 레지스터에 저장된 데이터
만일, 앞에서 "cyy라고 명령하지 않고 "Cyy라고 명령하고 저장된 데이터 :reg 명령으로 확인하면 기존에 "c 레지스터에 저장되어 있던 aaa^J가 삭제되지 않고 단지 그 뒤에 AAA^J가 첨가된 것을 확인할 수 있다.
AAA → 명령 모드에서 "Cyy라고 명령어 입력(현재 행을 복사해서 "c 레지스터에 첨가하라는 명령어)
"c aaa^JAAA^J → :reg 명령으로 확인한 "c 레지스터에 저장된 데이터
즉, 알파벳 레지스터에 데이터를 저장할 때, 소문자로 지칭하면 기존의 레지스터에 저장된 데이터를 지우고 새로운 데이터를 저장하고 대문자로 지칭하면 해당 레지스터에 들어있는 데이터 뒤에 새로운 데이터가 첨가(append)된다.
Anki 파일
아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다.
'Anki로 공부하기 > vi 또는 vim 익히기' 카테고리의 다른 글
017 잘라내기, 명령취소(undo), 재실행(redo), 이전 작업 반복하기 (0) | 2018.05.21 |
---|---|
016 vim 레지스터(register)의 데이터를 붙여넣기 하는 방법 (0) | 2018.05.20 |
014 vim 레지스터(register)의 종류 (0) | 2018.05.16 |
013 레지스터(register) 개요 (0) | 2018.05.15 |
012 복사(yank)와 붙여넣기(put) (1) | 2018.05.03 |