사전 설정 Tmux 설정으로 시간 절약

프로그래밍은 같은 일을 하는 것이다...한 번 또 한 번, 구역질이 난다.아니오, 컴퓨터가 아니라 불쌍한 프로그래머입니다. 왜냐하면 그들은 비슷한 프로젝트에 종사하고 각종 다른 도구를 사용하기 때문입니다.
예를 들어, Drupal 개발을 예로 들겠습니다. 일반적으로 개발 과정에서 액세스할 수 있는 작업은 다음과 같습니다.
  • 편집(Vim, 자연)
  • 시스템 명령을 실행하는 단말기, 예를 들어 drush cr, drush cedit, drupal generate:module 등.
  • 이 대기사항 목록일 수 있음/설명
  • 로그 출력
  • 시계 출력, 예를 들어 npm run watch
  • 테스트 출력, 예를 들어 phpunit, codeception
  • 파일 작업(예: ranger)
  • 표준물질
  • 결국 이렇게 보일 수도 있다.

    Tmux 상태, 왼쪽 아래 모서리를 주의하십시오. 세 창 중 첫 번째 창에 표시됩니다.
    이것은 전형적인 것이기 때문에, 만약 내가 모른다면, 너는 명령을 실행할 수 있다. 예를 들어 tmd <name of session>, 그것은 모든 것을 이렇게 설정할 것이다. 이것은 좋지 않니?또한 시간의 추이에 따라 우리는 이 설정을 개선하고 개선할 수 있는 모든 장점을 얻거나 프로젝트 유형에 따라 여러 개의 스크립트를 가지고 있다.

    시나리오


    문제 없습니다. 이 스크립트 drupal.sh을 보십시오.
    #!/bin/zsh
    
    # Note that this assumes base index of 1
    
    # check for existence of required things
    # $1 is the name of the window
    # we are in the directory of the drupal project
    
    if [ $# -eq 0 ]
      then
        echo "No arguments supplied, requires name of window."
        exit 1
    fi
    
    CWD=$(pwd)
    SESSION_NAME="$1"
    
    # detach from a tmux session if in one
    tmux detach > /dev/null
    
    # Create a new session, -d means detached itself
    set -- $(stty size) # $1 = rows $2 = columns
    tmux new-session -d -s $SESSION_NAME -x "$2" -y "$(($1 - 1))"
    
    tmux new-window -t $SESSION_NAME:1 -n 'code'
    tmux new-window -t $SESSION_NAME:2 -n 'logs'
    tmux new-window -t $SESSION_NAME:3 -n 'zsh'
    
    ## Logs window
    tmux select-window -t $SESSION_NAME:2
    
    # Start up the logs listener
    tmux send-keys "vbin/tail -f /var/log/apache2/error.log | clog drupal" C-m
    
    ## Zsh window
    tmux select-window -t $SESSION_NAME:3
    tmux rename-window 'Zsh'
    
    ## Main Window
    tmux select-window -t $SESSION_NAME:1
    tmux rename-window 'code'
    
    # Split into left and right
    tmux split-window -h -p30
    
    # Right ready for taking commands / tests.
    tmux select-pane -t 2
    tmux send-keys "figlet -f roman Ready! | lolcat -t" C-m
    
    # Left for neovim.
    tmux select-pane -t 1
    tmux send-keys "v" C-m
    
    # Finally attach to it
    tmux attach -t $SESSION_NAME
    

    작업 원리


    이 절차는 다음과 같이 분해할 수 있다.
  • 새 세션 만들기
  • 윈도우즈 만들기
  • 창 만들기
  • 창/창에 명령 보내기
  • 새 세션 만들기


    새 세션을 만드는 것은 tmux new-session -s <name-of-session>과 같이 매우 간단합니다.예제 스크립트에서 나는 더 많은 내용을 가지고 있다.
    # Create a new session, -d means detached itself
    set -- $(stty size) # $1 = rows $2 = columns
    tmux new-session -d -s $SESSION_NAME -x "$2" -y "$(($1 - 1))"
    
    현재 화면 해상도를 가져와서 이 크기의 분리 세션을 만드는 것입니다. -x 파라미터를 사용하여 크기를 지정하지 않으면, 창 분할 크기를 지정하면 크기가 작아집니다. 크기에 대한 고려점이 없기 때문입니다.

    창 만들기

    tmux new-window -n <name-of-window>을 통해 창을 만들 수 있습니다.이 예에서 우리는 다음과 같다.
    tmux new-window -t $SESSION_NAME:1 -n 'code'
    tmux new-window -t $SESSION_NAME:2 -n 'logs'
    tmux new-window -t $SESSION_NAME:3 -n 'zsh'
    
    여기에서 우리는 세 개의 창을 만들었습니다. -t 로고는 우리가 창의 목표를 지정할 수 있도록 하기 위해서입니다. 이 예에서, 이것은 우리가 방금 만든 세션과 그들이 나타나야 할 위치의 인덱스입니다.
    그리고 더 많은 명령을 얻기 위해 tmux select-window -t <name-of-session>:<index>을 사용할 수 있습니다.

    창 만들기


    일반적으로 창을 여러 창으로 분할해야 합니다.이것은 tmux split-window -h -p<percentage>을 통해 실현할 수 있으며, 그 중에서 -h은 수평 분할을 나타낸다(수직 분할은 어떻게 지정되었는지 알아맞혀 보세요?)-p은 백분율 분할을 나타낸다.이 예에서, 나는 30% 의 분할을 만들었지만, 만약 이것이 당신의 방해라면, 당신은 당연히 픽셀에 따라 지정할 수 있습니다.
    하나 이상의 버스트를 생성한 후 tmux select-pane -t <index-of-pane>을 사용하여 창을 대상으로 더 많은 명령을 얻을 수 있습니다.

    창 / 창에 명령 보내기


    마지막으로, 일단 우리의 창과 창이 준비되면, 우리는 그들에게 더 많은 명령을 보내서 시작할 수 있다.위의 몇 가지 예:
  • tmux send-keys "vbin/tail -f /var/log/apache2/error.log | clog drupal" C-m
  • (감시 모드에서 아파치 오류 로그에 tail 명령을 실행하고 파이프를 통해 clog-C-m으로 전송하여 <Enter>을 창이나 창으로 보내는 데 사용)
  • tmux send-keys "figlet -f roman Ready! | lolcat -t" C-m
  • (문자열 "Ready!"를 사용하여 figlet을 실행합니다.lolcat에 리얼 컬러 모드로 전송)

    완료 중


    스크립트를 반올림하여 tmux attach -t <name-of-session>을 호출하여 보여 줍니다.스크립트에서 세션의 이름이 매개 변수로 전송됩니다.이 스크립트를 실행하기 위해 .zshrc에서 다음과 같은 별명을 사용했습니다.
    alias tmd='~/.config/tmux/drupal.sh'
    
    분명히 Tmux 세션에 추가할 필요가 없습니다. 필요하면 스크립트에서 여러 가지 프로세스를 시작할 수 있고, 다른 작업을 수행할 때 (또는 실행하지 않을 때) 추가해서 검사할 수 있습니다.Tmux는 또한 여러 사람이 한 세션에 연결하여 특정 세션에 명령을 보내고 세션을 저장하는 (플러그인을 통해) 등을 지원합니다. 이 가능성은 이미 존재합니다.
    본문은 최초로 michaelwelford.blog에 발표되었다

    좋은 웹페이지 즐겨찾기