[Emacs] term-mode에서 붙여넣기(paste)
Emacs의 기본 설정 상태의 term-mode(
이번 글은 Emacs term-mode에 붙여넣기(paste)에 대한 내용이다.
터미널에 붙여넣기 전용으로 `term-paste`라는 함수가 제공된다. 터미널에서 붙여넣기가 필요한 시점에
터미널 환경에서는
원래대로 term-char-mode로 돌아가려면
기본 설정 상태의 term-mode는 term-char-mode, 즉 문자 단위 입출력으로 동작한다. 모든 키가 하나의 문자로 매칭되기 때문에 Emacs의 상당수 단축키를 제대로 이용할 수 없다.
term-line-mode에서는 모든 입출력을 라인 단위로 하기 때문에 RET가 입력되기 전 까지의 단축키를 이용하는데 무리가 없다. 하지만 간혹 표시되는 라인이 길 경우 이게 입력 라인으로 넘어가는 오동작도 간간히 발생하는 등 완벽한 터미널 환경과는 거리가 멀어진다.
특정 입력 모드를 term-mode의 기본 환경으로 설정하고 싶다면 훅으로 연결해 주면 된다.
Mac OS X에서 Emacs를 사용중이라면, 터미널에 붙여넣기 할 때
이렇게 귀찮게 할 필요 없이 Terminal.app이나 iTerm.app 등을 이용하는게 더 명쾌한 해답일지도 모르겠다...
M-x term
)는 붙이기(yank)가 되지 않는다. 아주 정확하게(?) 터미널을 애뮬레이션 하고 있는 만큼 붙이기 키(C-y
)도 가로채고 있기 때문일지도 모르겠다.이번 글은 Emacs term-mode에 붙여넣기(paste)에 대한 내용이다.
term-paste
터미널에 붙여넣기 전용으로 `term-paste`라는 함수가 제공된다. 터미널에서 붙여넣기가 필요한 시점에
C-c M-x term-paste
를 입력하자. 그러면 자동으로 커서가 있는 위치에 킬링(kill-ring)에 들어있는 내용이 붙여넣기가 된다.터미널 환경에서는
C-c
를 제외한 모든 키 입력을 term-mode가 가져가버리기 때문에 좀 귀찮지만 C-c
로 단축키 입력을 시작해야 한다.term-line-mode
C-c C-j
를 누르면 이 스크린샷 처럼 모드라인에 Term: line
이라고 term-line-mode임을 표시해준다. 이제 C-y
를 누르면 붙여넣기가 동작한다.원래대로 term-char-mode로 돌아가려면
C-c C-k
를 누르거나 C-c M-x term-char-mode
를 입력하면 된다.기본 설정 상태의 term-mode는 term-char-mode, 즉 문자 단위 입출력으로 동작한다. 모든 키가 하나의 문자로 매칭되기 때문에 Emacs의 상당수 단축키를 제대로 이용할 수 없다.
C-c
키로 입력을 시작해서 이 후 단축키를 입력해야만 단축키를 인식한다. 대신, Emacs에 기본 바인딩 되어 있는 ESC 등의 키를 터미널에서 정상적으로 이용이 가능하기 때문에 완벽한 터미널 환경을 구현해준다.term-line-mode에서는 모든 입출력을 라인 단위로 하기 때문에 RET가 입력되기 전 까지의 단축키를 이용하는데 무리가 없다. 하지만 간혹 표시되는 라인이 길 경우 이게 입력 라인으로 넘어가는 오동작도 간간히 발생하는 등 완벽한 터미널 환경과는 거리가 멀어진다.
기타 설정
특정 입력 모드를 term-mode의 기본 환경으로 설정하고 싶다면 훅으로 연결해 주면 된다.
(add-hook 'term-mode-hook 'term-line-mode)
사족
Mac OS X에서 Emacs를 사용중이라면, 터미널에 붙여넣기 할 때
CMD-V
를 이용해 할 수도 있다. 그런데 이건 붙여넣어 보이는 것일 뿐 정확하게 터미널에 입력되지 않아서 정상 동작을 하지 않는다. 실제 터미널에는 CMD-V
의 키 입력 코드가 입력되어 있을 것이다.이렇게 귀찮게 할 필요 없이 Terminal.app이나 iTerm.app 등을 이용하는게 더 명쾌한 해답일지도 모르겠다...
댓글