[Emacs] Copy/Cut/Paste/Delete

Emacs에서 복사 및 잘라내기, 붙이기, 삭제 등과 관련된 뜨금없는 기초 포스팅.

Emacs 에서 사용되는 이와 관련 용어는 일반적인 윈도우용 에디터와는 다르게 Killing and Yanking이라 부른다. 전통적인 Unix 스타일의 에디터에서 쓰이던 용어였으니 좀 익숙하지 않더라도 받아들여야 한다. (Vim도 처지가 비슷한 만큼 비슷한 용어를 사용한다.)


1. killing

일단 killing이라는 용어는 Delete로 와닿을 수 있겠지만, 사실은 Cut과 거의 동일하다. 뭔가를 지우면서 이것을 kill ring이라 부르는데 저장한다. 마치 클립보드에 저장하는 것 처럼.
  • C-w: 영역(Ctrl-Space로 선택)을 킬링으로 이동
  • C-k: 현재 커서위치 부터 현재 라인 끝 까지 킬링으로 이동
  • M-d: 현재 커서위치 부터 한 단어 까지 킬링으로 이동
위의 예는 일부에 불과하다. 공통적인 점이 있다면 kill로 시작되는 함수를 사용한다는 건데, kill의 의미 자체가 delete와는 다르다는 것을 파악가능하다면 무슨 용도인지 알 수가 있다.

물론 kill류 함수의 기능은 삭제(Delete)로도 이용이 가능하다. 대신 킬링의 내용이 바뀌니 어느 정도 이해하고 있어야 한다.

복사(Copy)의 경우도 비슷하게 킬링을 하게 되지만 킬링 후 보존한다는 의미로 kill-ring-save라는 함수가 쓰인다. 복사하기 단축키인 M-w키를 누르면 그냥 텍스트는 남아있고 킬링에만 들어가게 되는데, 마치 복사를 해서 클립보드에 집어넣는 것과 거의 동일하다.

2. yank

Emacs에서 붙여넣기를 하려면 C-y를 누르면 된다. 붙이기(paste)를 의미하는 용어가 yank이다. 이 경우 킬링 최상단, 즉 가장 최근에 킬링에 들어온 내용이 붙여넣기가 된다. Vim에서 복사하기 키인 'y'와 비슷한 용어인데 결과는 다르기 때문에 헷갈릴 수도 있다.

3. 참고자료

killing과 yank에 대한 연구(?)도 굉장히 오래된 만큼 다양한 기능들이 존재한다. 대체로 글자를 특정 단위로 삭제하는 커맨드의 경우 거의 대부분 킬링에 집어넣는 형태로 동작한다는 점이 윈도우용 GUI 에디터나 클립보드의 동작과는 다르다.

http://www.emacswiki.org/emacs/KillingAndYanking

킬링의 내용을 순환시키는 등, 킬링의 내용을 가지고 뭔가 하는것도 많기 때문에 좀 더 깊숙히 파악하려면 위 링크를 참고하는 편이 좋겠다. 하지만 기존 복사/잘라내기 - 붙여내기 형태를 원한다면 기본적인 설명은 다 된 것 같다.

댓글

이 블로그의 인기 게시물

버전(Version)을 제대로 이해하기

소수점 제거 함수 삼총사 ceil(), floor(), round()