2012-09-20 5 views
2

다른 함수형 언어를 사용한 경험에서 유용한 코드 스 니펫에서 본 내용을 모방하기에는 너무 어렵지 않지만 emacs와 Lisp은 매우 새로운 개념입니다. .emacs 파일에 멋진 윈도우 토글 링 기능을 추가했는데 제대로 작동합니다..emacs에서 특정 창 설정을 만드는 방법

그러나 시작시 특정 윈도우/프레임 정렬을 구성하고 싶습니다. 기본적으로, 나는 이맥스를 시작할 때마다 다음과 같은 일을하고 싶다. (보통 하루에 한 번, 하루에 한 번씩 열어 둔다.)

1. Split the screen in half (C-x 2) 
2. Grow the top half bigger by 20 lines (C-u 20 C-x ^) 
3. Open a second frame of emacs (C-x 5 2) 

이상적으로는 왼쪽 모니터의 첫 번째 프레임과 오른쪽 모니터의 두 번째 프레임을 최대화하는 것이 가장 이상적이지만 이상없이 할 수 있습니다.

.emacs 파일에 키 명령과 동일한 기능을 작성하는 방법에 대해 궁금합니다.

+1

가장 쉬운 방법은 채널이 키 조합 ('CX 다음 k''누르면 그 키를 호출하는 기능을 확인하는 것입니다 : 개인적으로 나는 실제 함수 호출과 같은 사항을 작성하는 것이 좋습니다 것입니다 2'). 이렇게하면이 키가 호출하는 함수 이름을 얻을 수 있고,이 함수 이름을 .emacs 파일에서 호출 할 수 있습니다. 'C-x 2'의 경우 함수는'split-window-below'입니다. –

+0

고마워요! 나는 그런 도움을 찾기 위해 생각하지 않았고, 인터넷 검색을 할 때이 일에 대해 구체적인 것을 찾기가 놀랍게 어려웠습니다. – ely

+0

나는 이것이 http://stackoverflow.com/questions/392314/saving-window-configurations-in-emacs의 중복이라고 생각한다. – Squidly

답변

3

이맥스의 최고의 기능은 자동 문서화 도움이됩니다, 그래서 당신은 쉽게 그림 아웃 다른 언어 경험 이맥스 혀짤배기에서 원하는 명령을 작성하는 방법에 대해 설명합니다. 당신이 원하는 것은 키의 똑 바른 앞으로 sqeuence이기 때문에

그러나, 매크로 은 최고의 서비스를 제공 것이며, 그것은 당신에게 내가 입력 한 keysequence 여기

입니다 작성을 시작하기에 좋은 장소 제공 :

C-x ( C-x 2 C-u 2 0 C-x^C-x 5 2 <switch-frame> C-x) 

나는 당신이 요구 한대로 매크로를 기록했습니다. 그런 다음 MX편집 - 마지막 KBD-매크로, 나는 참조 : 다음

;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel. 
;; Original keys: C-x 2 C-u 20 C-x^C-x 5 2 

Command: last-kbd-macro 
Key: none 

Macro: 


C-x 2   ;; split-window-below 
C-u 20 C-x^  ;; enlarge-window 
C-x 5 2   ;; make-frame-command 

MX이름 마지막 KBD-매크로 "foo는"MX삽입-KBD-매크로 "foo는"

(fset 'foo 
    [?\C-x ?2 ?\C-u ?2 ?0 ?\C-x ?^ ?\C-x ?5 ?2 (switch-frame #<frame *Minibuf-1* 0x101855410>)]) 

당신의 .emacs 파일에 마지막 덩어리를 추가하고

로 전화
(foo) 
+0

사실 그것은 그것에 대해 좋은 방법이 될 수 있습니다. 프레임 설명을 저장하고 다시로드 할 수 없으므로 ('# '는 다시 읽을 수 없기 때문에) 'switch-frame' 이벤트 (프레임 인수가있는 복잡한 이벤트)가 작동하지 않으므로주의해야합니다. .emacs에서 위의 것, Emacs는 시작시 알 수없는 # 프레임에 대해 불평 할 것입니다. – Stefan

1

프레임 및 창 구성을 구성하는 데 '굽어 진'방법이 있습니다.

C-x r f   frame-configuration-to-register 
C-x r w   window-configuration-to-register 
C-x r j   jump-to-register 

프레임/윈도우 구성이 그 프레임/윈도우 구성을로드가 포함 된 레지스터에 점프 : 세 가지 관련 기능이 있습니다.

창 구성은 프레임 단위가 아니므로 모든 프레임에 적용됩니다. 프레임 구성은 xmonad에서 작동하지 않는 것으로 보아 테스트하지 않았습니다.

그러나 세션간에 실제로 저장하는 방법에 대해서는 잘 모릅니다. 따라서 다른 것보다 FYI가 더 많습니다.

4

event_jr의 답변에 대한 후속 작업으로, (kbd)의 반환 값을 키보드 매크로로 직접 평가할 수 있습니다.보통 키보드 매크로를 정의하는 대신에 be assigned to a key을 사용할 수는 있지만, 효율성에 문제가없는 .emacs 파일에 넣으려는 일회용 시퀀스 - 더 나은 것을 찾으십시오. 친숙한 kbd 형식의 키 시퀀스를 insert-kbd-macro의 출력 대신에 kbd을 처리하기 때문에 주석으로 작성하면 매크로 편집기를 호출하지 않아도 이해하기가 훨씬 어렵습니다.

다음
(execute-kbd-macro (kbd " 
C-x 2   ;; split-window-below 
C-u 20 C-x^ ;; enlarge-window 
C-x 5 2   ;; make-frame-command 
")) 

난 그냥 복사 event_jr 같이 키보드 매크로 편집기의 출력을 붙여, 그래서 당신이 그 기능을 사용 할 수 있습니다했습니다 말했다 코멘트 :

을 자동으로 생성 이것에 대해 갈

(split-window-below) 
(enlarge-window 20) 
(make-frame-command) 
+0

특히 함수의 프로그래밍 측면을 배우면서 나는 동의합니다. – ely

+0

멋진 팁'execute-kb-macro', 저것. –

관련 문제