ㅈㅅㄹ

Tramp Mode 소개

Emacs2016. 10. 31. 20:40

이제 1년 반 남짓 Emacs를 쓰면서 가장 편리하고 매일 끊임 없이 사용하는 기능이라면 단연코 tramp이지 않을까 한다. 사실상 빌드 서버나 타겟에 있는 파일을 수정하겠다고 터미널을 띄우거나, 타겟에 접속해서 이제는 키 바인딩도 헷갈리는 VI를 실행하지 않아도 되는 이유이기도 하다.


Tramp Mode는 간략하게 설명하자면, 그냥 로컬 호스트의 이맥스를 통해 다른 리모트 서버의 파일을 읽거나 수정, 저장하는 일련의 편집 기능을 추상화된 네트워크 경로를 통해 할 수 있게 만드는 기능이다. 뭐 간단하게 말하자면 hifi라는 서버의 내 홈 디렉토리의 aa.txt를 수정하려면 /hifi:/home/ysjang/aa.txt를 열어서 편집하고 저장하면 알아서 네트워크를 통해 접속 버퍼에 파일 내용을 로드하고, 저장할 경우 다시 이걸 리모트 서버에다 저장해 주는 역할을 transparent하게 해 주는 기능이라 할 수 있다.


이게 왜 대단하냐 하면 일반적으로 ssh 등을 지원하는 리모트라면 굳이 protocol을 지정할 필요도 없이 사용할 수 있고, 지원하는 protocol 범위도 엄청나게 넓다. WINBIND는 물론이고 심지어 ADB까지도 지원할 정도니까... 그리고 그 말은 타겟의 파일 하나를 수정하기 위해 터미널로 접속해서 VIM도 아닌 VI를 띄워서 써야하는 상황 자체가 필요 없기도 하고[각주:1], 터미널의 속도나 안정성이 편집 자체에 영향을 주지 않기 때문에, 느리거나 불안한 접속 환경에서도 일단 읽고 저장하는 단계만 잘 된다면 네트워크 환경에 스트레스 받지 않고 본인이 익숙한 곳이라 쓰고 Emacs라고 읽는다에서 작업을 할 수 있게 된다.


이렇게 대단한 기능이지만 사실 사용하기 위해 별다른 준비가 필요하지는 않다. 22.1 이후 버전이라면 GNU Emacs에 기본으로 들어있고, 사용법도 간략하게 M-x find-file, 혹은 C-x C-f을 실행해서 경로로 /프로토콜:서버주소:경로을 주면 된다. 만약 프로토콜을 특별히 지정하지 않는다면 tramp-default-method을 사용하게 된다. 도중에 패스워드 입력이 필요할 경우 패스워드 입력 프롬프트가 뜨기도 하는데 그건 그 때 입력하면 된다.


다만 Windows 환경에서 Emacs를 사용할 경우, ssh 프로토콜을 통해 tramp를 사용하고 싶다면 putty의 plink를 사용해야 한다. 다운 받은 plink.exe를 실행 PATH가 걸려 있는 적절한 위치에 넣어 준 다음 Emacs init script에 아래와 같이 넣어 주자.

(when (eq system-type 'windows-nt)
  (when (executable-find "plink")
    (require 'tramp)
    (setq-default tramp-default-method "plink")))

뭐 물론, 이거 안 넣고 /plink:remotehost:path 같이 해도 되긴 한다만.

  1. embedded 해본 사람은 알겠지만 embedded에 Emacs는 커녕 VIM 도 안 넣어 놓는다. [본문으로]