Emacs : 탭을 사용하지 않는 궁극적 인 버퍼 이동

Emacs의 버퍼 이동은, tabbar/ELscreen 등의 탭계를 사용하고 있었습니다만, dired등의 숨겨져 싶은 버퍼까지 열어 버리는 것이 싫었습니다.

그런 때에, 루비키치씨의 이 기사를 읽고 iflipb.el 를 시험해 보았습니다.

  • 상세설명! Alt+Tab 감각으로 현명하게 버퍼를 원터치로 전환

  • 표준 기능의 switch-to-buffer에 비해 독특한 동작을 하는 것은 위의 기사에서 이해할 수 있었습니다만, GitHub의 Readme 을 읽으면 다음과 같은 기능도 설정할 수 있는 것을 알았습니다.
  • 숨겨진 버퍼를 설정할 수 있다 : iflipb-ignore-buffers
  • 리턴 기능 (마지막으로 되돌아 가면)을 설정할 수 있습니다 : iflipb-wrap-around

  • iflipb 설정


    ;; iflipb
    (setq iflipb-ignore-buffers (list "^[*]" "^magit" "]$"))
    (setq iflipb-wrap-around t)
    (bind-key "C-<right>" 'iflipb-next-buffer)
    (bind-key "C-<left>" 'iflipb-previous-buffer)
    

    ignore-buffers 설정은 정규식을 사용할 수 있습니다. 위의 설정은 다음 버퍼를 설정합니다.
  • *scratch* 등의 별표가 있는 것: "^[*]"
  • magit-status를 실행할 때마다 만들어지는 것 : "^magit"
  • dired 버퍼: "[dir]$"

  • 나의 경우, dired의 버퍼명에는, hogehoge[dir] 라고 하는 식으로 [dir] 를 부가해 파일명과 착각하지 않게 궁리하고 있으므로, 마지막 쪽의 캐릭터 라인에 매치 시키는 정규 표현 "[ dir]$"에서 작동합니다.

    미니 버퍼가 탭 대신



    실제로 사용해 보았습니다만, 버퍼 이동 조작을 하면 미니 버퍼에 이하와 같이 열려 있는 버퍼명이 표시됩니다. (현재 버퍼는 [ ]로 둘러싸여 표시됩니다.)

    tabbar 감각으로 사용할 수 있으므로 꽤 재미 있습니다. 스크래치 버퍼 만 즉시 열고 싶습니다. 작업 중에 스티커 메모로 사용하거나 약간의 식을 평가하거나 자주 사용하기 때문에 *scratch*만은 어떤 타이밍에서도 즉시 열고 싶네요. 이를 위해 ELscreen을 탭없이 사용하기로 결정했습니다. 힌트가 된 것은 아래의 기사입니다.
  • 매우 간단하고 눈에 띄지 않는 다중 창 관리 (그것은 ElScreen)

  • elscreen 설정


    ;; elscreen
    (setq elscreen-display-tab nil)  ;; Turn off tabs
    (setq elscreen-tab-display-kill-screen nil)
    (setq elscreen-tab-display-control nil)
    (elscreen-start)
    (elscreen-create) ;; start with 2 tabs
    
    (bind-key "C-<tab>" 'elscreen-next)
    

    다만 상기 설정만으로는 *scratch* 를 2면 열기…

  • Emacs 시작 화면을 트윈 크로 만들기

  • 이렇게 하면 elsscreen의 뒷면에 *scratch* 버퍼가 열리고 표면에 *dashboard*가 표시됩니다. 그리고 C-<tab> 하는 것으로 표리를 바꿀 수 있습니다. 실제의 작업은 표면을 사용해, iflipb를 사용해 복수의 버퍼를 왕래해, 필요할 때는 C-<tab> 로 언제라도 *scratch* 를 호출할 수 있다고 하는 구조입니다.

    좋은 웹페이지 즐겨찾기