사전 설정 Tmux 설정으로 시간 절약
8460 단어 productivitycommandlinelinuxtmux
예를 들어, Drupal 개발을 예로 들겠습니다. 일반적으로 개발 과정에서 액세스할 수 있는 작업은 다음과 같습니다.
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
figlet
을 실행합니다.lolcat에 리얼 컬러 모드로 전송)완료 중
스크립트를 반올림하여
tmux attach -t <name-of-session>
을 호출하여 보여 줍니다.스크립트에서 세션의 이름이 매개 변수로 전송됩니다.이 스크립트를 실행하기 위해 .zshrc
에서 다음과 같은 별명을 사용했습니다.alias tmd='~/.config/tmux/drupal.sh'
분명히 Tmux 세션에 추가할 필요가 없습니다. 필요하면 스크립트에서 여러 가지 프로세스를 시작할 수 있고, 다른 작업을 수행할 때 (또는 실행하지 않을 때) 추가해서 검사할 수 있습니다.Tmux는 또한 여러 사람이 한 세션에 연결하여 특정 세션에 명령을 보내고 세션을 저장하는 (플러그인을 통해) 등을 지원합니다. 이 가능성은 이미 존재합니다.본문은 최초로 michaelwelford.blog에 발표되었다
Reference
이 문제에 관하여(사전 설정 Tmux 설정으로 시간 절약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fenetikm/saving-time-with-a-preset-tmux-setup-3j04텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)