วิธีการตั้งค่า tmux เพื่อให้มันเริ่มขึ้นด้วยเปิดหน้าต่างที่ระบุ?


คำตอบ:


258

คุณสามารถเขียนเชลล์สคริปต์ขนาดเล็กที่เรียกทำงาน tmux ด้วยโปรแกรมที่ต้องการ ฉันมีสิ่งต่อไปนี้ในเชลล์สคริปต์ที่ฉันเรียกใช้ dev-tmux สภาพแวดล้อม dev:

#!/bin/sh
tmux new-session -d 'vim'
tmux split-window -v 'ipython'
tmux split-window -h
tmux new-window 'mutt'
tmux -2 attach-session -d

ดังนั้นทุกครั้งที่ฉันต้องการเปิดตัวสภาพแวดล้อมการพัฒนาที่ฉันโปรดปรานฉันสามารถทำได้

$ dev-tmux

4
ขอบคุณ! ฉันต้องทำการหลบหนีที่น่ากลัวเพื่อให้สิ่งนี้ทำงานร่วมกับbash --rcfileเพื่อให้ได้ shell ที่ดีบน linux ทางวิทยาศาสตร์โดยเฉพาะกับรุ่น devtools ที่เปิดใช้งาน จะออกจากที่นี่ถ้ามีคนพยายามทำเช่นเดียวกัน tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"
Lallen

1
ฉันคิดว่าบรรทัดที่สองจะต้องมีการเปลี่ยนแปลงมันต้องมีตัวเลือก - s ก่อน 'เป็นกลุ่ม' มันหมายถึง "tmux new-session -d 'vim'" จะต้องถูกแทนที่ด้วย "tmux new-session -d -s 'vim'"
Ahmad Yoosofan

2
@AhmadYoosofan vimหมายถึงคำสั่งที่จะดำเนินการในบานหน้าต่างแรก (และในเวลานั้นเท่านั้น) ของหน้าต่าง หากคุณต้องการตั้งชื่อเซสชันว่า 'vim' แทนใช่คุณถูกต้องคุณต้องใช้การ-sตั้งค่าสถานะ ไวยากรณ์ทั้งหมด: tmux new-session -d -s SessionName -n WindowName Command
Mitja

ระวัง: ถ้าคุณได้เริ่มต้นเซสชั่น tmux แล้ว (ที่อื่น ๆ ) คำสั่งอาจจบลงในเซสชั่นอื่น ๆ ! คำตอบของ @ waqar-lim ไม่มีปัญหานี้
haja

173

ฉันพยายามสร้างกริดที่สลับซับซ้อนและต้องจัดการกับการสลับและแยกบานหน้าต่างซ้ำแล้วซ้ำอีก นี่คือการเรียนรู้ของฉัน:

tmux new-session \;

ทำให้คุณเริ่มต้นด้วยเซสชั่นใหม่ หากต้องการแยกการใช้งานในแนวนอนหรือแนวตั้งsplit-window -hหรือ-vภายหลังให้ทำดังนี้

tmux new-session \; split-window -v \; split-window -h \;

สร้าง 3 บานหน้าต่างเช่นนี้:

------------
|          |
|----------|
|    |     |
------------

ในการรันคำสั่งในบานหน้าต่างนั้นเพียงแค่เพิ่มsend-keys 'my-command'คำสั่งเหล่านั้นลงไปในคำสั่งและC-mเรียกใช้งานมัน:

tmux new-session \; \
  send-keys 'tail -f /var/log/monitor.log' C-m \; \
  split-window -v \; \
  split-window -h \; \
  send-keys 'top' C-m \; 

และเซสชันที่ได้ควรเป็นเช่นนั้น

------------
|  tail    |
|----------|
|    | top |
------------

ตอนนี้ผมพยายามอีกครั้งย่อยแบ่งบานหน้าต่างด้านซ้ายด้านล่างเพื่อเปลี่ยนทั้งกลับมาใช้last-paneหรือในหน้าต่างที่ซับซ้อนมากขึ้นด้วยselect-pane -t 1ซึ่งเป็นจำนวนของบานหน้าต่างในการสั่งซื้อที่สร้างขึ้นต้นด้วย10

tmux new-session \; \
  send-keys 'tail -f /var/log/monitor.log' C-m \; \
  split-window -v \; \
  split-window -h \; \
  send-keys 'top' C-m \; \
  select-pane -t 1 \; \
  split-window -v \; \
  send-keys 'weechat' C-m \;

ทำแบบนั้น การรู้วิธีของคุณไปรอบ ๆ ด้วยsplit-windowและselect-paneเป็นสิ่งที่คุณต้องการ นอกจากนี้ยังสะดวกในการผ่านด้วย-p 75ขนาดเปอร์เซ็นต์ของบานหน้าต่างที่สร้างโดยsplit-windowเพื่อให้สามารถควบคุมขนาดของบานหน้าต่างได้มากขึ้น

tmux new-session \; \
  send-keys 'tail -f /var/log/monitor.log' C-m \; \
  split-window -v -p 75 \; \
  split-window -h -p 30 \; \
  send-keys 'top' C-m \; \
  select-pane -t 1 \; \
  split-window -v \; \
  send-keys 'weechat' C-m \;

ซึ่งส่งผลให้ในเซสชั่นดูเหมือนว่า

------------------
|      tail      |
|----------------|
|          | top |
|----------|     |
| weechat  |     |
------------------

หวังว่าจะช่วยให้tmuxผู้ที่ชื่นชอบในอนาคต


2
แนวทางที่น่าทึ่งคุณช่วยแนะนำฉันเกี่ยวกับการปรับขนาดความกว้างของแผงแนวตั้งหลังจากการแยก
MinhNV

2
@MinhNV -h -p 30สร้างแผงแนวนอนที่มีความสูง 30%; -v -p 75เช่นเดียวกับแนวตั้งที่มีความกว้าง 75%
Afr

1
วัตถุประสงค์ของการ\:คืออะไร? ฉันเคยเห็นสคริปท์ทำงานทั้งที่มีและไม่มีสิ่งนี้
Kevin McDonough

2
UPDATE: \;ส่งเซมิโคลอนไปยัง tmux แทนการทุบตีอนุญาตให้ส่งคำสั่งด้วยการเรียกไปยัง tmux หนึ่งครั้ง stackoverflow.com/questions/20913198/…
Kevin McDonough

96

คุณสามารถหาแหล่งที่มาที่แตกต่างจากช่วงเวลาที่คุณ.tmux.confชอบ:

# initialize sessions
bind S source-file ~/.tmux/session1 
bind s source-file ~/.tmux/session2

จากนั้นจัดรูปแบบเซสชันตามที่คุณต้องการ:

#session1
new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

สิ่งนี้จะเปิดหน้าต่าง 2 บานหน้าต่างที่สองจะตั้งชื่อว่า foo / bar และแยกครึ่งในแนวตั้ง (50%) โดยมี foo วิ่งอยู่เหนือแถบ โฟกัสจะอยู่ในหน้าต่าง 2 (foo / bar), บานหน้าต่างด้านบน (foo)

จากนั้นคุณสามารถเริ่มเซสชัน tmux ที่คุณต้องการ (ในกรณีนี้, เซสชัน 1) ด้วย PrefixShifts


4
ไม่สามารถเริ่มเซสชันเหล่านั้นภายใน. tmux.conf โดยไม่ต้องใช้ไฟล์เพิ่มเติมหรือไม่
Eno

2
หนึ่งในนั้นทำได้: ด้วยวิธีนี้คุณสามารถเพิ่มเซสชันที่ปรับแต่งได้ง่ายขึ้น - และไฟล์ข้อความเล็ก ๆ สองตัวนั้นแทบจะไม่มีค่าใช้จ่าย ...
jasonwryan

1
นี่จะไม่ใช่การซ้อนเซสชันหรือไม่ ฉันหมายถึงการทำงานPrefix Shift Sฉันจำเป็นต้องอยู่ใน tmux และการจัดหาไฟล์ของคุณพยายามเริ่มเซสชันใหม่ซึ่ง tmux ไม่ชอบและจะไม่ทำจนกว่าคุณจะบังคับให้ทำ
35915

1
@ user35915 มันจะไม่เริ่มเซสชันลูก แต่แยกต่างหาก - คุณสามารถสลับไปใช้เช่น prefix-s หรือ prefix-) และ
prefix-

1
นี่ควรเป็นคำตอบที่ยอมรับได้ อย่างไรก็ตามการผูกกับ s (ไม่ใช่ S) จะแทนที่การโยง tmux ในตัวสำหรับเซสชันที่แสดงรายการ
count0

54

ใช้tmuxinator - ช่วยให้คุณมีการกำหนดค่าหลายเซสชันและคุณสามารถเลือกที่จะเปิดตัวในเวลาใดก็ตาม คุณสามารถเปิดใช้คำสั่งในหน้าต่างหรือบานหน้าต่างเฉพาะและกำหนดหัวเรื่องให้กับ windows นี่คือตัวอย่างการใช้งานกับการพัฒนาแอพพลิเคชั่น Djangoการใช้งานเช่นกับการพัฒนาโปรแกรมประยุกต์

ไฟล์กำหนดค่าตัวอย่าง:

# ~/.tmuxinator/project_name.yml
# you can make as many tabs as you wish...

project_name: Tmuxinator
project_root: ~/code/rails_project
socket_name: foo # Not needed. Remove to use default socket
rvm: 1.9.2@rails_project
pre: sudo /etc/rc.d/mysqld start
tabs:
  - editor:
      layout: main-vertical
      panes:
        - vim
        - #empty, will just run plain bash
        - top
  - shell: git pull
  - database: rails db
  - server: rails s
  - logs: tail -f logs/development.log
  - console: rails c
  - capistrano:
  - server: ssh me@myhost

ดู README ที่ลิงค์ด้านบนสำหรับคำอธิบายแบบเต็ม


2
tmuxinator นั้นเป็นสิ่งที่ฉันกำลังมองหา ขอบคุณ!
Justin Force

3
นอกจากนี้ยังมี tmuxp ซึ่งค่อนข้างคล้ายกัน: github.com/tony/tmuxp
Ben Creasy


16
:~$ tmux new-session "tmux source-file ~/session1"  

session1

neww
split-window -v 'ipython'  
split-window -h  
new-window 'mutt'  

สร้างนามแฝงใน. bashrc

:~$ echo `alias tmux_s1='tmux new-session "tmux source-file ~/session1"'` >>~/.bashrc  
:~$ . ~/.bashrc  
:~$ tmux_s1  

~ อะไรนะneww? ฉันไม่สามารถหาคำสั่งนั้นได้ทุกที่ ~ ดูเหมือนว่าจะเป็นnew-windowแต่ฉันไม่เข้าใจว่าทำไมคุณถึงใช้ทั้งแบบยาวและสั้น
oligofren

11

แรกฉันมีวิธีการจาก@jasonwryanแต่ถ้าคุณมีมากกว่า 2 configs มันอาจทำให้สับสน

ดังนั้นฉันจึงสร้างฟังก์ชันนามแฝง:

tmx () {
    tmux "$2" source-file "$HOME/.tmux/$1.conf";
}

ใน~/.tmux/ฉันมีหลายเซสชันสำหรับการใช้งานหลายอย่าง ตัวอย่างเช่นฉันทำงานกับ บริษัท ต่าง ๆ ที่มีสภาพแวดล้อมการพัฒนาที่แตกต่างกัน ดังนั้นด้วยฟังก์ชั่นนามแฝงข้างต้นฉันสามารถเรียก: tmx company1และโหลดการตั้งค่าที่ฉันต้องการ

อัพเดต:วัตถุประสงค์ของ "$ 2" หลังจากtmuxคำสั่งคือคุณสามารถส่ง tmux เพิ่มเติมได้


1
การรวมสิ่งนี้เข้ากับเคล็ดลับจาก @ soc1c ทำให้การตั้งค่าสุดหวาน ( github.com/fatso83/dotfiles/commit/35a7ed ) ขอบคุณ!
oligofren

ฟังก์ชั่นใช้งานไม่ได้จริง ๆ หากยังไม่มีเซสชั่น tmux ที่มีอยู่เพื่อเชื่อมต่อ (รับno server running on /tmp/tmux-1000/default) tmux new-sessionนั่นเป็นเหตุผลที่ผมจำเป็นต้องมีการแก้ไขคำสั่งด้วย Ref github.com/fatso83/dotfiles/commit/…
oligofren

1
ฉันตั้งค่า tmux ด้วย systemd ดังนั้นจึงมักมีเซสชันที่รันอยู่หลังจากการบู๊ต wiki.archlinux.org/index.php/Tmux#Autostart_with_systemdขออภัยที่ไม่ได้พูดถึง
danbruegge

10

จากสคริปต์ "get.all" ของฉันซึ่งฉันเรียกใช้ทุกเช้าเพื่อเรียกใช้งานงาน "get.XXX" ที่ตามมาเพื่อรีเฟรชซอฟต์แวร์ที่ฉันติดตาม บางคนก็เลิกอัตโนมัติ คนอื่น ๆ ต้องการการโต้ตอบมากขึ้นเมื่อการทำเสร็จ (เช่นขอให้สร้าง emacs)

#!/bin/sh
tmux att -t get ||
tmux \
  new -s get -n capp \; \
  send-keys 'get.capp' C-m \; \
  neww -n emacs \; \
  send-keys 'get.emacs' C-m \; \
  neww -n git \; \
  send-keys 'get.git' C-m \; \
  neww -n mini \; \
  send-keys 'get.mini' C-m \; \
  neww -n port \; \
  send-keys 'get.port' C-m \; \
  neww -n rakudo \; \
  send-keys 'get.rakudo' C-m \; \
  neww -n neil \; \
  send-keys 'get.neil && get.neil2 && exit' C-m \; \
  neww -n red \; \
  send-keys 'get.red && exit' C-m \; \
  neww -n cpan \; \
  send-keys 'get.cpan && exit' C-m \; \
  selectw -t emacs

8

หากคุณต้องการแยกหน้าจอใน 2 บานหน้าต่าง (พูดในแนวนอน) คุณสามารถรันคำสั่งนี้ (ไม่ต้องใช้ tmux หรือเชลล์สคริปต์):

tmux new-session \; split-window -h \;

หน้าจอของคุณจะมีลักษณะดังนี้:

[ks@localhost ~]$                      │[ks@localhost ~]$ 
                                       
                                       
                                       
                                       
                                       
                                       
                                       
                                       
                                       
                                       
                                       
[10] 0:ks@localhost:~*                  "localhost.localdomain" 19:51 31-янв-16

8

และนี่คือวิธีที่ฉันทำ:

#!/bin/bash

function has-session {
  tmux has-session -t name_of_my_session 2>/dev/null
}

if has-session ; then
  echo "Session already exists"
else
  cd /path/to/my/project
  tmux new-session -d -s name_of_my_session 'vim'
  tmux split-window -h -p 40 start_web_server
  tmux split-window -v
  tmux attach-session -d -t name_of_my_session
fi

ฉันมีหนึ่งไฟล์สำหรับแต่ละโครงการของฉัน นอกจากนี้คุณสามารถจัดกลุ่มให้มีบางงานสำหรับงานอดิเรก

นอกจากนี้คุณสามารถย้ายไปยัง~/binโฟลเดอร์เพิ่มPATHและให้tmux_my_awesome_projectชื่อ จากนั้นคุณจะสามารถเรียกใช้จากแต่ละสถานที่


4

มันใช้งานได้สำหรับฉัน การสร้าง 5 windows ด้วยชื่อที่กำหนดและเลือกอัตโนมัติไปที่homeหน้าต่าง

new  -n home
neww -n emacs
neww -n puppet
neww -n haskell
neww -n ruby
selectw -t 1

3

ลองพี่มันเป็น bootstrapper โครงการ

มันให้ apis ง่ายต่อการโต้ตอบกับ tmuxโต้ตอบได้ง่าย

ดูเหมือนว่านี้:

#!/bin/sh
# @ project_name/tasks/init.sh
structure project_name
  window editor
    run 'vim'
  window terminal
    run 'echo happy coding ...'
focus editor
connect project_name

ในการเปิดตัวโครงการทุกคนต้องทำคือเรียกใช้คำสั่งต่อไปนี้ -

bro start <project_name>

ชำระเงินหน้าจอด้านล่างจะแสดงวิธีเริ่มต้นbroและใช้tmuxAPI

https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif


2

มีปลั๊กอิน tmux สำหรับสิ่งนี้

ลองใช้tmux-resurrect

เรียกคืนสภาพแวดล้อม tmux หลังจากรีสตาร์ทระบบ

Tmux นั้นยอดเยี่ยมยกเว้นเมื่อคุณต้องรีสตาร์ทคอมพิวเตอร์ คุณสูญเสียโปรแกรมที่กำลังทำงานไดเรกทอรีการทำงานโครงร่างบานหน้าต่าง ฯลฯ ทั้งหมดมีเครื่องมือการจัดการที่เป็นประโยชน์ แต่พวกเขาต้องการการกำหนดค่าเริ่มต้นและการปรับปรุงอย่างต่อเนื่องเมื่อเวิร์กโฟลว์ของคุณวิวัฒนาการหรือคุณเริ่มโครงการใหม่

tmux-resurrect บันทึกรายละเอียดเล็ก ๆ น้อย ๆ ทั้งหมดจากสภาพแวดล้อม tmux ของคุณเพื่อให้สามารถเรียกคืนได้อย่างสมบูรณ์หลังจากรีสตาร์ทระบบ (หรือเมื่อคุณรู้สึกว่ามัน) ไม่ต้องการการกำหนดค่า คุณควรรู้สึกว่าคุณไม่เคยเลิก tmux

หรือtmux-continuum

คุณสมบัติ:

  • ประหยัดอย่างต่อเนื่องของสภาพแวดล้อม tmux
  • tmux อัตโนมัติเริ่มทำงานเมื่อคอมพิวเตอร์ / เซิร์ฟเวอร์เปิดอยู่
  • เรียกคืนอัตโนมัติเมื่อเริ่มใช้ tmux

1

คุณควรระบุไว้ในไฟล์ tmux config ของคุณ ( ~/.tmux.conf) เช่น:

new mocp
neww mutt

new -d
neww
neww

(เปิดหนึ่งเซสชันที่มี 2 windows ที่เปิดใช้ mocp ในครั้งแรกและปิดเป็นวินาทีและอีกเซสชันที่แยกออกมาพร้อมกับ 3 หน้าต่างว่างเปล่า)


1

ฉันสร้างสคริปต์นี้ ไม่จำเป็นต้องใช้ tmuxinator ทับทิมหรืออื่น ๆ มันเป็นเพียงสคริปต์ทุบตีกำหนดค่าได้:

ไฟล์ชื่อ config ควรมีดังนี้:

combo=()
combo+=('logs' 'cd /var/log; clear; pwd')
combo+=('home' 'cd ~; clear; pwd')

และรหัส bash ควรเป็น:

#!/bin/bash

if [ -r config ]; then
    echo ""
    echo "Loading custom file"
    . config
else
    . config.dist
fi

tmux start-server

window=0
windownumber=-1

for i in "${combo[@]}"; do

    if [ $((window%2)) == 0 ]; then
        name=${i}
        ((windownumber++))
    else
        command=${i}
    fi

    if [ ${combo[0]} == "${i}" ]; then
        tmux new-session -d -s StarTmux -n "${name}"
    else
        if [ $((window%2)) == 0 ]; then
            tmux new-window -tStarTmux:$windownumber -n "${name}"
        fi
    fi

    if [ $((window%2)) == 1 ]; then
        tmux send-keys -tStarTmux:$windownumber "${command}" C-m
    fi

    ((window++))
done

tmux select-window -tStarTmux:0
tmux attach-session -d -tStarTmux

สวัสดี sensorario ในขณะที่ลิงค์นี้อาจตอบคำถามได้ดีกว่าที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง คำตอบสำหรับลิงค์เท่านั้นอาจไม่ถูกต้องหากหน้าเว็บที่เชื่อมโยงมีการเปลี่ยนแปลง โปรดดูที่นี่: ทำไมและคำตอบบางคำถูกลบไปอย่างไร
bummi

Nb อย่างน่าอัศจรรย์tmux start_serverไม่เริ่มเซิร์ฟเวอร์ด้วยตัวเอง ดูgithub.com/tmux/tmux/issues/182
Jack Wasey

1

tmuxpสนับสนุนการกำหนดค่าเซสชัน JSON หรือ YAML และ python API ไฟล์คอนฟิกูเรชัน tmuxp อย่างง่ายเพื่อสร้างเซสชันใหม่ในไวยากรณ์ YAML คือ:

session_name: 2-pane-vertical
windows:
  - window_name: my test window
    panes:
      - pwd
      - pwd

1

ปลั๊กอินtmux-continuumจะบันทึกเซสชั่น tmux ของคุณโดยอัตโนมัติและโหลดในครั้งถัดไปที่ tmux เริ่มต้นควรติดตั้งได้ง่ายกว่าโซลูชันสคริปต์ที่กำหนดเองที่นี่

คุณสมบัติ:

  • ประหยัดอย่างต่อเนื่องของสภาพแวดล้อม tmux
  • tmux อัตโนมัติเริ่มทำงานเมื่อคอมพิวเตอร์ / เซิร์ฟเวอร์เปิดอยู่
  • เรียกคืนอัตโนมัติเมื่อเริ่มใช้ tmux

หากต้องการบันทึกเซสชันตามต้องการคุณสามารถใช้ปลั๊กอินtmux-resurrect จำเป็นต้องใช้tmux- resurrectเพื่อรันtmux-continuum

tmux-resurrect บันทึกรายละเอียดเล็ก ๆ น้อย ๆ ทั้งหมดจากสภาพแวดล้อม tmux ของคุณเพื่อให้สามารถเรียกคืนได้อย่างสมบูรณ์หลังจากรีสตาร์ทระบบ (หรือเมื่อคุณรู้สึกว่ามัน) ไม่ต้องการการกำหนดค่า คุณควรรู้สึกว่าคุณไม่เคยเลิก tmux


1

คุณสามารถใช้tmux hooksเพื่อดำเนินการคำสั่งเมื่อสร้างเซสชันใหม่ โดยเฉพาะสิ่งนี้สามารถทำได้โดยใช้session-createdตะขอ

ตัวอย่างเช่นหากต้องการแยกหน้าจอสามวิธีโดยที่ htop ทำงานที่มุมขวาล่างคุณสามารถเพิ่มบรรทัดต่อไปนี้ใน~/.tmux.confไฟล์ของคุณ:

set-hook -g session-created 'split -h ; split -v top'

ข้อดีของวิธีนี้คือคุณไม่ต้องรัน tmux ด้วยวิธีพิเศษ (เช่น shell script หรือ alias) เพื่อให้ได้ผลลัพธ์ที่ต้องการ คุณยังสามารถรวมสิ่งนี้เข้ากับtmux new-session -A -s mysessionคำอธิบายในคำตอบอื่น ๆเช่นว่าคำสั่ง hook จะทำงานเฉพาะเมื่อคุณสร้างเซสชันครั้งแรกเท่านั้นและไม่ได้อยู่ในไฟล์แนบที่ตามมา

ฟีเจอร์นี้ถูกเพิ่มเข้ามาโดยd15d54c2cย้อนกลับไปในปี 2016 รุ่นแรกที่รวมเอาไว้คือ 2.4


0

ฉันลองใช้ความคิดทั้งหมดในหน้านี้และฉันไม่ชอบมันเลย ฉันต้องการโซลูชันที่เริ่ม tmux ด้วยชุดหน้าต่างเฉพาะเมื่อเทอร์มินัลของฉันเปิดขึ้น ฉันยังต้องการให้มันเป็น idempotent เช่นการเปิดหน้าต่างเทอร์มินัลใหม่ใช้เวลามากกว่าเซสชัน tmux จากก่อนหน้านี้

โซลูชันข้างต้นมักจะเปิดเซสชัน tmux หลายครั้งและฉันต้องการเพียงครั้งเดียว ก่อนอื่นฉันเพิ่มสิ่งนี้ใน~/.bash_profile:

tmux start-server
if [[ -z "$TMUX" ]]
then
  exec tmux attach -d -t default
fi

จากนั้นฉันเพิ่มสิ่งต่อไปนี้ในของฉัน~/.tmux.conf:

new -s default -n emacs /usr/local/bin/emacs
neww -n shell /usr/local/bin/bash
neww -n shell /usr/local/bin/bash
selectw -t 1

ตอนนี้ทุกครั้งที่ฉันเริ่มต้นเทอร์มินัลหรือเริ่มต้น tmux หรืออะไรก็ตามฉันก็จะกลับไปที่การตั้งค่าที่ฉันต้องการ (ชื่อเซสชันdefault) หรือสร้างเซสชั่นใหม่ด้วยการตั้งค่านั้น


น่าอัศจรรย์tmux start_serverอย่าเริ่มต้นเซิร์ฟเวอร์ด้วยตัวเอง ดูgithub.com/tmux/tmux/issues/182
Jack Wasey

0

สคริปต์นี้เริ่มเซสชันที่มีชื่อ "e" และสามหน้าต่าง

#!/bin/sh 
tmux new-session -s e   -n etc -d 'cd /etc; bash -i'
tmux new-window  -t e:1 -n home   'cd ~; bash -i'
tmux new-window  -t e:2 -n log   'cd /var/log; bash -i'

tmux select-window -t e:1
tmux -2 attach-session -t e
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.