운영체제/Linux

vi/vim에서 register(레지스터)/buffer(버퍼)를 사용하는 방법 (복사/자르기/붙여넣기)

쌍쌍바나나 2016. 6. 22. 22:30
반응형

Vi/Vim에서 레지스터를 이용해 복사, 잘라내기, 붙여내기 하는 방법

yy, dd를 이용해 복사 및 붙여넣기를 했고, pp를 통해 붙여넣기를 수행했습니다. 하지만, pp를 통해 붙여넣기전에 yy,dd를 했다면, 그 이전에 있는 내용이 아닌 가장 최근의 값을 사용하게 됩니다. 즉, 하나의 버퍼를 사용해서 복사, 잘라내기, 붙여넣기를 수행하고 있습니다.

vi에서는 내부 register를 지원하고 있습니다. 아주 간단한 방법으로 동작합니다. 일단 :reg를 입력하면 현재 register의 항목을 볼 수 있습니다.

" " "0 "1 "2 "3 "4 "5 "6 "7 "8 "9 "- ". "% "# "/

  • "" 레지스터 -> 바로 이전에 지워진 내용이 항상 들어 갑니다
  • "1 ~ "9 레지스터 -> 지워진 내용이 큐 형식으로 들어 갑니다
  • ". 레지스터 -> 최근까지 타이핑 한 내용이 들어 갑니다
  • "% 레지스터 -> 현재 편집하는 파일명이 들어 갑니다
  • "/ 레지스터 -> 가장 최근에 검색한 문자열이 들어 갑니다

register에 저장되어 있는 항목은 "", "1 ~ "9, ". , "%, "/가 있습니다. 레지스터에 들어가는 순서는 큐(queue)의 형태로 들어갑니다. 바로 이전에 지워진 내용이 들어가는 "", 그 이후에는 "1 ,"2, "3, ... "9의 순서로 들어가게 됩니다.

그렇다면 레지스터를 우리가 직접 입력이 가능합니다. 나는 1번 레지스터와, 2번 레지스터에 복사를 하고 싶으면 "1yy를 하시면 됩니다. 복사한 값을 붙여넣기 위해서는 "1pp를 하시면 됩니다. 여기서 "를 안하시면... 그냥 한줄 붙여넣기이기 때문에 "을 꼭해줘야 합니다.

그 외에도 (a~z)의 레지스터를 지원하고 있으니, 반복되는 값은 register에 등록해놓고 사용하셔도 좋을 것 같습니다. 하지만 다시 시작하면, 없어진다는 점! 말 그대로 register, buffer입니다.

반응형