เป็นไปได้หรือไม่ที่จะเปิด a new-windowด้วยไดเร็กทอรีการทำงานที่ตั้งค่าเป็นไดเร็กทอรีที่ฉันกำลังใช้อยู่ฉันกำลังใช้zshหากมีความสำคัญ
เป็นไปได้หรือไม่ที่จะเปิด a new-windowด้วยไดเร็กทอรีการทำงานที่ตั้งค่าเป็นไดเร็กทอรีที่ฉันกำลังใช้อยู่ฉันกำลังใช้zshหากมีความสำคัญ
คำตอบ:
เริ่มต้นในtmux 1.9 default-pathตัวเลือกจะถูกลบออกดังนั้นคุณจำเป็นต้องใช้-cตัวเลือกด้วยnew-windowและsplit-window(เช่น rebinding c, "และ%ผูกที่จะรวม
-c '#{pane_current_path}') ดูคำตอบอื่น ๆ ของคำถามนี้สำหรับรายละเอียด
คุณลักษณะที่เกี่ยวข้องที่ดินในtmuxลำต้น SVN ในช่วงต้นเดือนกุมภาพันธ์ 2012 ในtmuxสร้างที่มีรหัสนี้tmuxผูกที่สำคัญที่ก่อให้เกิดnew-windowจะสร้างใหม่หน้าต่างที่มีไดเรกทอรีที่ทำงานเดียวกันปัจจุบันเป็นกระบวนการที่ใช้งานบานหน้าต่างปัจจุบัน (ตราบใดที่default-pathเซสชั่น ตัวเลือกว่างเปล่ามันเป็นค่าเริ่มต้น) เช่นเดียวกับบานหน้าต่างที่สร้างโดยsplit-windowคำสั่งเมื่อถูกเรียกผ่านการเชื่อม
สิ่งนี้ใช้รหัสเฉพาะแพลตฟอร์มเพื่อให้รองรับเฉพาะบางระบบปฏิบัติการในเวลานี้: ดาร์วิน (OS X), FreeBSD, Linux, OpenBSD และ Solaris
สิ่งนี้ควรจะมีอยู่ในtmuxรุ่นถัดไป(1.7?)
ด้วยtmux 1.4 ฉันมักจะใช้
tmux neww
ในเชลล์ที่มีไดเร็กทอรีการทำงานปัจจุบันที่ต้องการอยู่แล้ว
อย่างไรก็ตามหากฉันคาดหวังว่าจะต้องสร้างหลายหน้าต่างด้วยไดเรกทอรีการทำงานปัจจุบันเดียวกัน (หรือฉันต้องการเริ่มต้นด้วยการcผูกคีย์<prefix> ปกติ) จากนั้นฉันจะตั้งค่าdefault-pathตัวเลือกเซสชันผ่าน
tmux set-option default-path "$PWD"
ในเชลล์ที่มีไดเรกทอรีการทำงานปัจจุบันที่ต้องการอยู่แล้ว (แม้ว่าคุณสามารถทำได้อย่างชัดเจนจากไดเรกทอรีใด ๆ และเพียงแค่ระบุค่าแทน)
หากdefault-pathมีการตั้งค่าให้เป็นค่าที่ไม่ว่างเปล่าค่าของมันจะถูกนำมาใช้แทน“สืบทอด” tmux newwไดเรกทอรีการทำงานปัจจุบันจากการสวดบรรทัดคำสั่งของ
tmuxคำถามที่พบบ่อยมีรายการชื่อ“ฉันสามารถเปิดหน้าต่างใหม่ในไดเรกทอรีเดียวกันกับหน้าต่างปัจจุบัน?” ที่อธิบายถึงวิธีการอื่น มันค่อนข้างซับซ้อนแม้ว่า
/proc/PID/cwdบน Linux)) มีวิธีแก้ปัญหาบางส่วนที่เป็นไปได้ในรายการของtmux FAQ (มีเชลล์บันทึก cwd เมื่อพิมพ์พรอมต์จากนั้นผูกคีย์ที่เริ่มเชลล์ใหม่ในไดเร็กทอรีที่บันทึก)
default-pathตัวเลือกเซสชัน (ถ้าตั้งค่าไว้) tmux คำถามที่พบบ่อยมีรายการที่อธิบายถึงวิธีการผูกที่สำคัญที่จะเริ่มต้นหน้าต่างใหม่กับ CWD ของเปลือกทำงานในหน้าต่างปัจจุบันที่หนึ่ง (“ฉันสามารถเปิดหน้าต่างใหม่ในไดเรกทอรีเดียวกันกับหน้าต่างปัจจุบัน?”) แต่วิธีการนี้ค่อนข้างซับซ้อน อาจทำเช่นเดียวกันสำหรับsplit-windowและnew-session(แทนneww)
ปัจจุบัน (1.9a) Tmux หน้าคนแสดงรายการเลือก-c start-directoryพารามิเตอร์สำหรับคำสั่งบางอย่างรวมถึงและnew-window split-windowนอกจากนี้ยังมีตัวแปรรูปแบบซึ่งหมายถึงpane_current_path
Current path if available
โดยการรวมเหล่านี้เราสามารถเปิดหน้าต่างใหม่กับไดเรกทอรีการทำงานปัจจุบันโดยใช้
new-window -c "#{pane_current_path}"
ใบเสนอราคาที่จำเป็นในกรณีที่เส้นทางปัจจุบันมีช่องว่าง
หากคุณต้องการที่จะแยกบานหน้าต่างปัจจุบันแนวตั้งใช้
split-window -c "#{pane_current_path}"
หรือสำหรับการแยกแนวนอน
split-window -h -c "#{pane_current_path}"
.tmux.confเพื่อให้ผูกที่สำคัญเปิดแยกและหน้าต่างใหม่กับไดเรกทอรีการทำงานปัจจุบันโดยค่าเริ่มต้นเพิ่มต่อไปนี้ของคุณ "ด้วยคำพูดรอบคือการบอก Tmux ก็ไม่ควรเริ่มต้นสตริง แต่ผูก"สำคัญ
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
prefix- :จากนั้นพิมพ์source ~/.tmux.conf
tmux source-file .tmux.confหรือเพียงแค่
new-window -c "#{pane_current_path}"ใช่ใช้ คุณสามารถเพิ่มสิ่งต่อไปนี้ในของคุณ~/.tmux.confเพื่อทำให้เป็นแบบถาวร (สมมติว่าการโยงคีย์เริ่มต้น):
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
default-pathการตั้งค่าเส้นทางถูกลบออกจากรหัสและ tmux ต้นน้ำเขียนแนะนำในการกระทำข้อความว่าการใช้อย่างใดอย่างหนึ่ง-c "#{pane_current_path}"หรือ-c "$PWDในnew-windowและsplit-windowคำสั่ง
ฉันยังตอบคำถามซ้ำซ้อนนี้ด้วย
คำตอบอื่น ๆ ไม่ทำงานสำหรับฉันเมื่อฉันลองทำให้พวกเขาเป็นผูก (เฉพาะtmux split-window -c) แต่ฉันได้สร้างโซลูชันของฉันเองที่ฉันใช้มานานกว่าหนึ่งปีซึ่งเหมาะกับทั้งหน้าต่างใหม่และการแยก:
~/.bashrc:
PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'
~/.tmux.conf:
unbind-key c
bind-key c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key C new-window
bind-key - run-shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key | run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"
ใช้งานได้อย่างน้อยกับ $ (tmux -V) 1.8 ดูบรรทัดที่แสดงความคิดเห็นได้ที่นี่สำหรับเวอร์ชันที่ใช้กับ tmux ที่เก่ากว่าซึ่งไม่มีคำสั่ง show-environment
tmux ทำเช่นนั้นในรุ่น 1.8 แต่ใน 1.9 คุณสมบัตินี้ถูกลบออกไปโดยใช้การ-cตั้งค่าสถานะ
สิ่งนี้สามารถแก้ไขได้ แต่มีผลผูกพันใหม่new-windowแต่ในกรณีที่คุณต้องการเรียกใช้งานอย่างอื่นมันจะกลายเป็นเรื่องที่พูดมากเกินไป: แทนที่จะพิมพ์neww man tmuxคุณจะต้องพิมพ์neww -c "#{pane_current_path}" man tmuxที่คุณอาจไม่ต้องการทำ
มี modux ของ tmux (ฉันเป็นผู้เขียน) เพื่อเพิ่มภาษาสคริปต์ที่เหมาะสมใน tmux เพื่ออนุญาตให้ใช้นามแฝง, ผูกหลายคำสั่งใน 'โหมด', ตัวแปร, ลูป, ฯลฯ ... และยังนำพฤติกรรมกลับมา : หน้าต่างและบานหน้าต่างใหม่จะเปิดขึ้นในไดเรกทอรีปัจจุบัน
สามารถสร้างได้จากแหล่งข้อมูลที่นี่: http://ershov.github.io/tmux/
<prefix>cเพื่ออ่านไดเรกทอรีการทำงานของอินสแตนซ์เปลือกพื้นฐาน (ถ้ามี) และการตั้งค่าก่อนที่จะมีการดำเนินการdefault-pathnew-windowหรือเป็นที่มากเกินไปที่จะขอจากtmux :)