2014-10-16 1 views
1

두 개의 창이 있습니다. 하나는 버퍼 목록이고, n을 사용하면 다른 창에서 버퍼 목록에 버퍼를 표시하는 방법은 무엇입니까? 버퍼 목록에서 탐색하려면? 고마워요.포커스가 버퍼 목록에있을 때 다른 창에서 버퍼 내용을 실시간으로 표시하는 방법

+0

두 개 이상의 프레임이있을 수 있으므로 대상 프레임을 식별해야하기 때문에 간단한 해결책을 모르고 있습니다. 두 프레임 만 존재하면 다른 프레임을 사용하는 조건이있을 수 있다고 가정합니다. 다음은 어떤 프레임 버퍼가 표시되는지를 제어하는 ​​복잡한 방법에 대한 링크입니다. 지난 한 해 동안이 방법을 성공적으로 사용했습니다. http://stackoverflow.com/a/18371427/2112489 – lawlist

+0

위의 주석 원래 포스터는 노련한 Emacs 사용자와 동일한 컨텍스트에서 '프레임'이라는 용어를 사용한다고 가정합니다. 원래의 포스터가 노련한 이맥스 사용자가 '창'이라는 용어를 사용한다는 의미 인 경우,이 용어는 의미가 명확하다는 것을 이해해야합니다. 그 차이점을 보여주는 예는 다음과 같은 기능을 포함하지만 이에 국한되지 않습니다 :'find-file-other-window'; 'find-file-other-frame'; 'switch-to-buffer-other-window'; '스위치 - 버퍼 - 다른 - 프레임 '. – lawlist

+0

참고 :'buffer-menu-mode'는'Buffer List * '버퍼에 표시되는 파일을 처리하는 다양한 기능을 포함하는 도구 모음 항목을 포함합니다 - 예 :'o' - * 다른 창에서 선택 *. 도구 모음을 비활성화하거나 보이지 않게하려면 다음 키보드와 마우스 바로 가기 조합으로 도구 모음과 유사한 팝업 메뉴가 나타납니다.'C-down-mouse-3' – lawlist

답변

1

질문을 올바르게 이해하면 대답은 단순히 버퍼 메뉴에서 C-o을 사용하는 것입니다. 다른 창에있는 행의 버퍼를 표시하지만 해당 버퍼는 선택하지 않습니다. 즉, 입력 포커스를 해당 버퍼 창으로 이동하지 않습니다. 버퍼 목록은 입력 포커스를 유지하므로 서로 다른 버퍼에 계속 표시하려면 C-o을 다른 행에 계속 사용할 수 있습니다.

"프레임"이라고 말하면 이맥스 창을 의미하는 경우 위를 참조하십시오. 버퍼가 다른 프레임에 있어도 마찬가지입니다. MS Windows를 비롯한 일부 창 관리자는 입력 포커스를 새 프레임으로 변경합니다. 따라서 예를 들어, nilpop-up-frames (별도의 프레임이 버퍼를 표시하는 데 사용됨)이 있고 표시하려는 버퍼가 다른 프레임에 표시되어 있지 않은 경우 (예 : C-o) 표시 한 경우 새로운 프레임을 만들뿐만 아니라 새로운 프레임으로 포커스를 이동합니다. 버퍼가 이미 다른 프레임에 표시되면 C-o은 해당 프레임을 단순히 올립니다.

현재 버퍼 목록 디스플레이에는 (a) 커서를 아래쪽 또는 이전 버퍼 라인으로 이동하고 (b) C-o 버퍼 이름을 표시하는 동작을 호출하는 키 바인딩이 없습니다. 타겟 버퍼 라인. 그러나 여러분은 그러한 명령을 쉽게 정의하여 키에 바인딩 할 수 있습니다.

(defun show-next (arg) 
    "Show next line's buffer in another window." 
    (interactive "p") 
    (next-line arg) 
    (Buffer-menu-switch-other-window)) 

(defun show-previous (arg) 
    "Show previous line's buffer in another window." 
    (interactive "p") 
    (previous-line arg) 
    (Buffer-menu-switch-other-window)) 

(define-key Buffer-menu-mode-map "\M-n" 'show-next) 
(define-key Buffer-menu-mode-map "\M-p" 'show-previous) 
0

다음은이 기능에 대한 내 프로토 타입입니다. 그것은 방문한 후에 버퍼를 죽입니다.

이것은 파일 관리자 인 ranger에서 좋아하는 기능입니다. 디렉토리를 탐색 할 때 편리합니다.

(setq show-next-current-buffer nil) 

(defun show-next() 
    (interactive) 
    (next-line 1) 
    (dired-find-file-other-window) 
    (if show-next-current-buffer (kill-buffer show-next-current-buffer)) 
    (setq show-next-current-buffer (current-buffer)) 
    (other-window 1) 
    ) 

(defun show-previous() 
    (interactive) 
    (previous-line 1) 
    (dired-find-file-other-window) 
    (if show-next-current-buffer (kill-buffer show-next-current-buffer)) 
    (setq show-next-current-buffer (current-buffer)) 
    (other-window 1) 
    ) 

(define-key dired-mode-map "n" 'show-next) 
(define-key dired-mode-map "p" 'show-previous) 

편집 : 나는/수 있도록 쉽게이 기능을 해제 할 수있는 사소한 모드를 작성했습니다. https://gitlab.com/emacs-stuff/my-elisp/blob/master/dired-show.el을 참조하고 필요에 따라 혼합하십시오.

+0

이것은 dired 모드에서 매우 유용합니다. – godblessfq