2011-01-14 3 views
10

화면 모드 나 tmux를 쉘 모드에서 emacs에 첨부하고 싶습니다. 원격 서버의 화면 내부에서 열등한 프로세스로 이맥을 실행하는 경우가 종종 있습니다. 워크 플로우를 로컬 emacs + TRAMP로 바꿀 수 있다면 좋을 것입니다. 그러나 영구 세션을 다시 연결할 수 있어야합니다. (이러한 워크 플로우는 특히 R [1]의 분석에 유용합니다)Emacs 쉘 ​​모드에서 Gnu 화면 : 색상 이탈 코드를 수정하는 방법

Mx 용어 또는 Mx ansi-term + screen + R의 조합을 사용할 때 기타 글리치가 계속 발생하고 충돌하기 때문에 쉘 모드가 바람직합니다. 그러나 Mx 쉘에서 실행할 때 화면에서 이스케이프 코드로 렌더링되는 ansi 컬러를 제거 할 수 없습니다. ansi-color-for-comint-mode-on을 사용하면 괜찮습니다. 그러나 화면이 나타나 자 마자 끔찍한 엉망이됩니다.

셸 + 화면 또는 tmux를 사용하여 ansi 색상을 올바르게 해석하기위한 조건 집합을 알아 낸 사람이 있습니까? ? .. 지속적인 원격 프로세스를 실행하고 지역 이맥스에 부착? .. 측면에서 다른 대안이 모두 색상을 제거하기에 대한 어떤 있습니까

[1] http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/

+1

@Seppo는 정확합니다. 쉘 모드는 원하는대로 할 수 없습니다. 'M-x term '또는'M-x ansi-term'으로 인해 발생하는 문제를 설명하는 것이 유용 할 수 있습니다. –

답변

5

는 지금까지 내가 말할 수있는, 화면은 VT100과 같은 기존의 문자 터미널이 아닌 단순히 때문에 이맥스 '쉘 모드가 간단하고, 제공 할 수 없습니다 터미널의 기능을 필요로한다. 그래서 문제는 컬러 코드를 없애거나 해석하려고하는 것이 아닙니다. 스크린이 제대로 작동하려면 더 많은 터미널 기능이 필요합니다.

기본적으로 화면은 Emacs의 쉘 모드에서 시작하지 않습니다. 가능한 한 명확한 화면 기능이 필요하다는 오류가 있습니다. 웹 주위의 일부 게시물은 TERM = xterm을 설정하여이 문제를 해결할 것을 제안하는 것 같지만, 터미널에는 XTerm의 기능이 있다고 생각하는 속임수가 있습니다.

Emacs라는 용어와 ansi-term 모드는 Screen이 요구하는 터미널 기능을 제공하지만 불행히도 이러한 모드에 문제가있는 것처럼 보입니다.

"Emacs"의 일부인 "emacsclient -t"명령을 사용하면 화면과 비슷한 방식으로 기존 Emacs 인스턴스에 연결된 로컬 프레임을 열 수 있습니다. 이전에 생성 된 Screen 인스턴스에 다시 연결해야합니다. 그렇게하면 로컬 컴퓨터에서 emacsclient를 구성하여 TCP를 통해 영구 원격 Emacs 인스턴스에 다시 연결할 수 있습니다.

1

나는 화면을 사용하지 않는, 하지만 .bashrc에서이 문제를 해결할 수 있습니다. xterm 창에 대해 색을 켜기 만하면되는 조건부 코드가 있지만, 지원하지 않는 다른 터미널에 대해서는 그만두는 것이 좋습니다. M-x 쉘은 TERM 변수를 바보로 설정합니다. 따라서 테스트하고 그에 따라 색상을 설정할 수 있습니다.

case "$TERM" in 
dumb) 
## non-color settings here 
;; 
xterm) 
## color settings here 
;; 
*) 
## default (maybe you want non-color here?) 
;; 
esac