manywaypark's Blog
개발, 검색, 함수

문제: 보통 M-x shell을 써서 실행시킨 emacs shell에서는 다음과 같은 메시지와 함께 screen을 실행할 수 없다.
"Clear screen capability required."

해결: 그냥 shell말고 ansi shell(terminal)을 실행시키면 된다.
M-x ansi-term RET /bin/bash RET screen

ansi-term에서는 키바인딩이 shell과 달리 원래 bash의 바인딩이다. 즉, M-을 썼던 곳에 C-를 써야한다는 말이다.

문제: emacs에서 ansi-term을 실행시킨 후 ssh 등으로 원격 접속 한 다음 기존에 실행시켜 두었던 screen에 붙으려(attach) 할때 다음과 같은 메시지가 나오면서 제대로 실행 되지 않는다.
"Cannot find terminfo entry for 'eterm-color'."

해결: default 위치에 eterm-color 파일을 생성해준다.
sudo mkdir /usr/share/terminfo/e
sudo cp /usr/share/terminfo/E/Eterm-color /usr/share/terminfo/e/eterm-color

(Ubuntu에서는 /usr/share/terminfo/에 다른 것들은 다 소문자 인데 이상하게 e만 대문자로 되어있다. 내 경우에는 local에서 실행할 때는 잘 되었지만, ansi-term내에서 다른 박스로 접속후에 screen을 쓰려고 했을 때 eterm-color를 못찾는다는 메시지가 나오면서 제대로 실행되지 않았다.)

보너스: 다음 내용을 ~/.screenrc에 추가해보자.
shell -${SHELL}
caption always "%{= kc}%H (system load: %l)%-21=%{= .m}%Y.%m.%d(%D) %0c"

line #1: screen이 실행될 때 기본 shell 설정(~/.bash_profile 등)을 읽어들인다.
line #2: screen 화면에서 유용한 정보들(호스트 이름, 시스템 부하상태, 시간)을 표시한다.

참고:
http://www.omgili.com/newsgroups/gnu/emacs/help/mailman5350118812963732220help-gnu-emacsgnuorg.html
http://www.emacswiki.org/cgi-bin/wiki/GnuScreen
http://www.softpanorama.org/Utilities/Screen/screenrc_examples.shtml

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
tramp를 쓰면 간단히 해결된다.
TRAMP는 "Transparent Remote (file) Access, Multiple Protocol"의 줄임말이다.
.emacs에 다음 내용을 추가한다.

(require 'tramp)
(setq tramp-default-method "scp")


파일을 열때 (C-x C-f) 입력형식:
/host:path/to/file


원격 파일을 편집하는 도중에 M-x shell을 해보라. 원격지의 shell이 뜬다. 이게 아마도 file을 괄호친 이유일까?

언제봐도 emacs는 간결하고 아름답다.

참고: Tramp: Remote File Editing in Emacs

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG emacs, Remote
emacs의 nxml-mode를 사용하면, emacs에서 xml 파일들을 쉽게 편집할 수 있다.
nxml은 내부적으로 validation에 relaxng라는 xml schema 표기 형식을 사용하는데, docbook이나 xhtml같은 널리 쓰이는 문서형식에 대해서는 /usr/share/emacs/site-lisp/nxml-mode/schema/ 디렉토리에 *.rnc 파일들이 준비되어 있어서 쓰는데 별 문제가 없다. 그런데, custom dtd나 schema를 쓰려면 어떻게 해야할까?
trang을 사용해서 변환하면 된다.
$ trang /path/to/custom.dtd /path/to/custom.rnc
emacs의 메뉴에서 XML > Set Schema > File... 선택후 /path/to/custom.rnc를 입력하면 즉시 편집중인 문서의 validation을 실행하고 결과를 상태표시줄에 표시한다.
에러 있는 부분은 빨간 밑줄이 쳐지며, <C-c C-n>으로 에러있는 곳으로 바로 움직일 수도 있다.
유용한 편집 팁을 하나만 더 소개하자면, 마크업 부분 입력(eg, <do) 후에 <C-return>을 눌러보자. schema 상에서 그곳에 삽입을 허용하는 do로 시작하는 tag들이 예쁘게 줄을 선다 (문맥감지 자동완성 기능이라 맘대로 명명했다).

James Clark에게 경의를...

happy hackin'

이올린에 북마크하기(0) 이올린에 추천하기(0)
얼마전에 emacs를 21에서 22으로 버전업을 했는데, 미니 버퍼에서의 자동 완성 기능이 동작하지 않았다.
M-x 후에 몇 글자 입력하고 tab을 눌렀을 때 분명히 자동완성이 존재하는 문자열임에도 불구하고 "No completions of blabla~~"라고 표시되며 동작하지 않았다.
검색을 해도 쉽게 나오진 않았는데, 해결법은 의외로 간단했다. 참고
.emacs 파일에서 다음과 같은 라인을 찾아서
;; find a line like this in .emacs
(define-key minibuffer-local-map [tab] 'comint-dynamic-complete)
다음과 같이 바꾼다.
;; replace the line with this line
(define-key minibuffer-local-map "\t" 'comint-dynamic-complete)

emacs 새 버전의 reader의 구현이나 설정이 "[tab]" 같은 형태의 입력을 못 받아들이는 듯하다.

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
1 
분류 전체보기 (64)
잡담 (13)
함수형 언어 (22)
emacs (4)
java (8)
tips & tricks (12)
사랑 (0)
가사 (0)