Skip to content

Instantly share code, notes, and snippets.

@sooop
Created November 24, 2019 05:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sooop/97894f38f55ba5e1559aea09903dd91d to your computer and use it in GitHub Desktop.
Save sooop/97894f38f55ba5e1559aea09903dd91d to your computer and use it in GitHub Desktop.
레지스터에는 총 10가지의 종류가 있다!!
* 이름없는 레지스터 : ""
* 10개의 번호 레지스터 : "0
* 삭제 레지스터 : "-
* 26개의 이름이 있는 레지스터 a-z : 대소문자를 구분하지 않음
* 세 종류의 읽기 전용 레지스터 : ":, "., "%
* 대체 버퍼 레지스터 : "#
* 표현식 레지스터 : "=
* 선택/드롭 레지스터 : "*, "+, "~
* 최근 검색 패턴 레지스터 : "/
----
1> 이름이 없는 레지스터 ""
vim은 텍스트를 삭제하거나 복사(yank)할 때 다른 레지스터를 명시하든 그러지 않든 무조건 이름이 없는 레지스터에 그 내용을 함께 기록한다. 이름 없는 레지스터는 거의 모든 편집 동작에 관계되므로 마치 "가장 최근의 사용된 레지스터"와 비슷하게 동작한다. 만약 이름이 있는 레지스터에 무언가를 붙여넣으면 똑같은 내용이 이름 없는 레지스터에도 들어간다. 예외로는 삭제 레지스터인 "_ 가 있다. "_dd 는 삭제된 텍스트를 어디에도 저장하지 않는다.
이름 없는 레지스터는 p나 P 명령에서 레지스터가 명시되지 않을 때 항상 사용된다. 그리고 이름이 없는 레지스터를 명시해서 무언가 쓰게 되면 그때는 "0 이 대신 사용된다.
2> 번호로 쓰는 레지스터
우선 0 레지스터는 가장 최근에 복사/삭제한 텍스트가 저장된다. 1 레지스터는 가장 최근에 삭제 혹은 변경 명령을 통해서 삭제한 텍스트가 저장된다. 이 때 삭제된 분량이 1줄 이상이어야 한다. 그렇지 않은 경우에는 삭제 레지스터("-)가 대신 사용된다. 삭제 분량이 작더라도 이동명령과 함께 사용된 경우에는 1번 레지스터를 쓴다. (%, (, ), ₩, /, ?, n, N, {, })
0 혹은 1에 들어간 내용이 있은 후 계속되는 편집에서 제거되는 내용이 있다면 이들 내용은 모두 2, 3, 4 ,... 레지스터로 계속해서 옮겨진다. 이런식으로 9번 레지스터까지가 삭제된 내용을 보관하는데 사용된다.
3> (작은) 삭제 레지스터
1줄 이하의 내용이 삭제될 때, 삭제되는 내용을 자동으로 저장하고 있는 레지스터
4> 이름이 있는 레지스터 (a - z)
"ay 처럼 사용자가 지정해서 사용할 수 있는 레지스터. 26개의 레지스터가 있으며, 대소문자로 레지스터 자체를 구분하지는 않지만 쓰는 동작을 구분한다. 내용을 쓸 때 소문자 이름을 사용하면 기존 내용을 새 내용으로 교체한다. 하지만 대문자 이름을 쓰면 기존 내용 뒤에 새 내용을 덧붙인다.
5> 읽기 전용 레지스터| (":, "., "%)
읽기만 할 수 있는 것으로 각자 그 이유가 있다.
* ". : 가장 마지막에 삽입된 문자열을 가지고 있다. 삽입모드에서 CTLR-A나 CTRL-@을 눌렀을 때 동작이 이 레지스터를 사용한다. 하지만 CTRL-R에서는 동작하지 않는다.
* "% : 현재 편집중인 파일의 이름을 저장하고 있다.
* ": : 가장 최근에 실행된 명령줄을 기억하는 레지스터.
6> 대체 파일 레지스터
현재 창의 대체 파일의 이름을 기억하는 레지스터.
7> 표현식 버퍼
이것은 정확히는 문자열을 저장하는 레지스터는 아니다. 하지만 레지스터를 사용해서 명령에서 표현식을 사용하는 방법이다. 명령줄 모드나 삽입모드에서 CTRL-R을 누른 후 =를 누르면 표현식을 입력하는 모드로 전환된다. 여기세 입력된 표현식은 평가되어 명령줄 혹은 버퍼에 그대로 삽입된다.
8> 선택과 드롭 레지스터. : "*, "+, "~
GUI에서 선택된 텍스트를 얻기 위해서 이 레지스터들을 사용한다. 클립보드가 활성화되어 있지 않다면 이름없는 레지스터가 대신 사용될 것이다.(Visual 모드에서 선택한 내용이 아니다.) 읽기 전용인 "~ 레지스터는 창으로 드래그하여 드롭한 텍스트를 저장하는 공간이다.
9> 블랙홀 레지스터: "_
여기에 무언가를 쓰면,아무것도 일어나지 않는다. 따라서 어떤 내용을 레지스터에 남기지 않고 완전히 제거하려면 이 레지스터를 쓰면 된다.
10> 최종 검색 레지스터 : "/
마지막 검색어가 들어있다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment