SpaceMac에서 tmux와 유사한 사용자 정의 레이아웃 안내서 만들기

저는 vim의 세계tmux에서 왔습니다. 저는 Spacemacs의 다분열 창 구조를 정말 그리워합니다.그러나 사용자 정의 레이아웃을 어떻게 정의하는지 알게 된 후에 이것은 나에게 있어서 간단한 연습인 것 같다.
그래서 나는 다른 사람들이 스페이스 맥으로 좋은 레이아웃과 작업 공간을 설정하는 데 도움을 줄 블로그 글을 써야 한다고 생각한다.

몇몇 용어


창, 레이아웃, 창, 버퍼에 대한vim, tmux, Emacs의 용어를 설명하고 싶습니다.

tmux
emacs
우주 컴퓨터
완충 구역
창유리
완충 구역
완충 구역
창문.
창문.
프레임
프레임
라벨
창문.
창문.
배치
작업 영역

위엄: 버퍼


버퍼는 파일의 메모리 텍스트이며, 실제로는 Vim 메모리의 한 구역으로 파일에서 읽은 텍스트를 저장하여 편집하는 데 사용된다.또한 텍스트를 입력할 수 있도록 관련 파일이 없는 빈 버퍼를 만들 수 있습니다.

윈도우


창은 버퍼의 뷰포트입니다.한 버퍼에 여러 개의 창을 사용할 수도 있고, 다른 버퍼에 여러 개의 창을 사용할 수도 있다.
Vim은 여러 가지 방법으로 작업을 구성할 수 있습니다. 그 중 하나는 지정된 Vim 인스턴스의 동일한 탭 페이지에서 여러 분할 창을 열 수 있습니다.이것은 같은 버퍼나 파일에 여러 개의 보기를 허용하며, 심지어는 여러 버퍼를 나란히 열거하거나 원하는 방식으로 볼 수 있습니다.

위엄: 레이블


탭 페이지는 창의 컬렉션입니다.

Emacs:프레임


프레임은 하나 이상의 Emacs 창을 포함하는 화면 객체입니다.그래픽 환경의 용어로 윈도우라고 하는 객체입니다.그러나 Emacs가 다른 방식으로 이 단어를 사용하기 때문에 우리는 여기서 '창' 이라고 할 수 없다.
한 프레임은 처음에 주 창과/또는 작은 버퍼 창을 포함한다.주 창의 수직 또는 수평을 작은 창으로 세분화할 수 있습니다.

Emacs:Windows


창은 화면에 버퍼를 표시하는 영역입니다.
창이 프레임으로 그룹화됩니다.각 프레임에는 최소한 하나의 창이 포함됩니다.한 번에 여러 버퍼를 볼 수 있도록 여러 개의 겹치지 않는 창으로 세분화할 수 있습니다.

tmux


tmux가 표시하는 모든 창은 하나 이상의 창으로 나눌 수 있습니다.각 창은 디스플레이의 특정 영역을 차지하며 별도의 터미널입니다.

SpaceMac:레이아웃


레이아웃은 부모 레이아웃과 동일한 버퍼 목록을 공유하는 여러 개의 작업공간을 정의할 수 있는 버퍼 격리가 있는 창 구성입니다.
레이아웃은 버퍼 목록과 연결된 창 설정입니다.버퍼 목록은 임의로 선택한 버퍼 집합일 수 있습니다.SpaceMac은 투사물 항목과 관련된 버퍼 집합을 만드는 데 의미 있는 도구를 제공합니다.

SpaceMac:작업공간


작업공간은 부모 레이아웃과 동일한 버퍼를 공유하는 지정된 레이아웃에 여러 개의 레이아웃을 정의할 수 있는 하위 레이아웃입니다.

배치


tmux에서 많은 미리 설정된 레이아웃을 제공합니다.그들은 다음과 같습니다.
  • 수평균등
  • 균일수직
  • 주수면
  • 주수직
  • 타일
  • 각 레이아웃에 대해 자세히 알고 스페이스Mac에서 각 유형의 레이아웃을 만드는 방법을 배울 것입니다

    사용자 정의 레이아웃


    SpaceMac의 사용자 정의 레이아웃은 매크로 SpaceMac | 를 사용하여 SPC l o 를 통해 액세스할 수 있는 사용자 정의 레이아웃을 정의할 수 있습니다.*에서 이러한 사용자 정의 레이아웃을 정의할 수 있습니다.dotspacemacs/user config* 부분의 스페이스macs 파일입니다.

    수평 배치를 고르게 하다.


    창문은 왼쪽에서 오른쪽으로 골고루 창문에 분포되어 있다.

    ;; even-horizontal
    (spacemacs|define-custom-layout "@EVEN-HORIZONTAL"
      :binding "1"
      :body
      (split-window-below))
    
    

    균일 수직 배치


    창문 유리가 위에서 아래로 고르게 분포되어 있다.

    ;; even-vertical
    (spacemacs|define-custom-layout "@EVEN-VERTICAL"
      :binding "2"
      :body
      (split-window-right))
    
    

    주 평면 배치도


    창 상단에는 큰 창(주)이 표시되고 나머지 창은 하단의 남은 공간에서 왼쪽에서 오른쪽으로 확장됩니다.주 창 높이 창 옵션을 사용하여 위쪽 창의 높이를 지정합니다.

    ;; main-horizontal
    (spacemacs|define-custom-layout "@MAIN-HORIZONTAL"
      :binding "3"
      :body
      (split-window-below)
      (winum-select-window-2)
      (split-window-right))
    
    

    주요 수직 배치


    주 수면과 비슷하지만 큰 창은 왼쪽에 있고 다른 창은 오른쪽을 따라 위에서 아래로 펼쳐진다.

    ;; main-vertical
    (spacemacs|define-custom-layout "@MAIN-VERTICAL"
      :binding "4"
      :body
      (split-window-right)
      (winum-select-window-2)
      (split-window-below))
    
    

    배열


    창은 가능한 한 줄과 열로 고르게 펼쳐집니다.

    ;; tiled
    (spacemacs|define-custom-layout "@TILED"
      :binding "5"
      :body
      (split-window-right)
      (split-window-below)
      (winum-select-window-2)
      (split-window-below))
    
    

    사용자 정의 레이아웃 예


    지금까지 스페이스Mac에서 tmux 표준 설정과 같은 사용자 정의 레이아웃을 만드는 방법을 알고 있습니다.그러나 위의 예는 프레임워크일 뿐입니다. 윈도우즈에 파일을 불러오지 않습니다.SpaceMac에 필요한 파일, 터미널, 기타 프로그램을 불러와서 접근할 수 있는 사용자 정의 레이아웃을 만드는 실제 예를 볼 수 있습니다.

    SpaceMac의 사용자 정의 레이아웃


    이전에vim에서, 나는 tmuxinator를 사용하여 나의 tmux 세션과 프로젝트의 사용자 정의 레이아웃을 관리해 왔다.나는 여러 항목을 동시에 처리할 것이기 때문에 모든 항목에 표준적이고 독특한 레이아웃을 정의하는 데 매우 도움이 된다.

    tmuxinator 레이아웃 정의 사용하기


    tmuxinator는 복잡한 tmux 세션을 쉽게 관리할 수 있는 도구입니다.이것은 tmux에 직접 전달할 수 있는 레이아웃 설정이 있습니다. 따라서 다섯 가지 표준 레이아웃 중 하나를 선택하거나 자신의 레이아웃을 지정할 수 있습니다.
    windows:
      - eslint-plugin-ember:
         layout: main-vertical
         root: ~/Documents/www/emberjs/eslint-plugin-ember
         panes:
           - vim README.md
           - nvm use 10.15.0
    
    
    위의 동일한 구성은 다음과 같이 SpaceMac에 쉽게 마이그레이션할 수 있습니다.스페이스맥의 다른 매크로, 예를 들어find file, eshell, split window right 등을 익히는 것이 필요하다. 매크로가 어떻게 작동하는지 알면 사용자 정의 레이아웃을 설정하기 쉽다.
    (spacemacs|define-custom-layout "@eslint-ember-plugin"
      :binding "p"
      :body
      (find-file "~/Documents/www/emberjs/eslint-plugin-ember/README.md")
      (neotree-toggle)
      (winum-select-window-1) ;; Go to the left window
      (split-window-right) ;; Create the right side but don't move focus
      (winum-select-window-2) ;; Go to the right window
      (eshell))
    
    
    결과 레이아웃은 다음과 유사합니다.

    도구책

  • Official Guides in Spacemacs about Layouts & workspaces
  • How to set up custom layout for Spacemacs
  • Emacs Frames
  • tmux: Windows and Panes
  • Vim: Windows
  • The Tao of tmux: Window Layouts
  • 좋은 웹페이지 즐겨찾기