สมมติว่าคุณอยู่ใน / very / cool / และ / deep / ซ้อนกัน / โฟลเดอร์ และคุณต้องการเปิดแท็บเทอร์มินัลใหม่ในโฟลเดอร์เดียวกัน
คุณจะทำอย่างไร
ฉันใช้ Mac OS และ Zsh
สมมติว่าคุณอยู่ใน / very / cool / และ / deep / ซ้อนกัน / โฟลเดอร์ และคุณต้องการเปิดแท็บเทอร์มินัลใหม่ในโฟลเดอร์เดียวกัน
คุณจะทำอย่างไร
ฉันใช้ Mac OS และ Zsh
คำตอบ:
ใช้Oh-My-Zshและเพิ่มปลั๊กอิน 'osx' ใน ~ / .zshrcของคุณเช่น:
plugins=(osx)
หากคุณใช้แอป Terminal ของ OSX คุณต้องเพิ่มterminalapp
ปลั๊กอินด้วย: credit
plugins=(osx terminalapp)
หากคุณใช้ iTerm คุณต้องตั้งค่าตัวเลือกการกำหนดค่า ( โปรดทราบว่าคุณไม่จำเป็นต้องใช้ปลั๊กอิน zsh เพื่อให้การทำงาน ): เครดิต
การตั้งค่า> โปรไฟล์> ค่าเริ่มต้น> ทั่วไป> ไดเรกทอรีการทำงาน> ใช้ตัวเลือกไดเรกทอรีของเซสชันก่อนหน้าอีกครั้ง
นั่นคือทั้งหมดที่คุณต้องทำ!
rails
กำลังทำงานและฉันพยายามเปิดหน้าต่างใหม่ผ่าน command-n ฉันจะกลับมาที่ไดเรกทอรีหลักของฉัน
ขณะนี้มีตัวเลือกอื่นใน Mac OS X Lion กำลังใช้งานคุณลักษณะในตัว มันใช้ 'escape sequences' เพื่อค้นหาไดเร็กทอรีปัจจุบัน สำหรับฉันมันใช้งานได้ถ้าฉันใช้คำสั่งเหล่านี้ใน. zshrc ของฉัน:
precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}
มันเป็นไปได้ที่จะใช้PS1
(สำหรับ Bash จากวิกินี้ ):
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
โดยที่\e]2;
escape sequence จะพิมพ์สิ่งต่าง ๆ ในแถบหัวเรื่อง มันดูเหมือนว่า Terminal.app จะได้รับข้อมูลมาจากที่นั่น
ข้อมูลมากกว่านี้:
/etc/bashrc
คุณจะเห็นว่ามันยังรองรับรหัสหลบหนีใหม่สำหรับแจ้งเทอร์มินัลของไดเรกทอรีการทำงานโดยใช้file:
URL ซึ่งสามารถจัดการชื่อพา ธ ที่ถูกต้องทั้งหมดได้ด้วยการเข้ารหัสเปอร์เซ็นต์ (ชื่อหน้าต่าง / แท็บสามารถมีชุดอักขระ ASCII ได้ )
\e]7;file://hostname/percent-encoded-pathname\a
chpwd () {print -Pn "\e]2; %~/ \a"}
?
นี่เป็นเวอร์ชั่นที่ง่ายมากที่ฉันใช้ใน bash และยังใช้งานได้ใน zsh มันบันทึกโฟลเดอร์ปัจจุบันในไฟล์หลังจากทุกคำสั่ง (ไม่ทำร้าย IMO มากเกินไป) และเปิดเทอร์มินัลใหม่ในโฟลเดอร์ปัจจุบันที่บันทึกไว้
เพิ่มต่อไปนี้เพื่อ. zshrc
# emulate bash PROMPT_COMMAND (only for zsh)
precmd() { eval "$PROMPT_COMMAND" }
# open new terminal in same dir
PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
[[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"
gdirsดูเหมือนจะเป็นวิธีที่เกือบจะทำ: แท็บใหม่แล้ว gdirs เพื่อเลือกไดเรกทอรีลึกและ voila ความคิดแรกของฉันคือการทำให้ไดเรกทอรีสแต็กร่วมกันระหว่างแท็บทั้งหมดและทำ cd ~ 1 หลังแท็บใหม่ แต่ฉันไม่สามารถหาวิธีการทำเช่นนั้นดูเหมือนว่าแต่ละตัวอย่างของ zsh เก็บของตัวเอง การแชร์ประวัติจะต้องทำผ่านไฟล์ทั่วไปดังนั้นอาจทำที่นี่ด้วย ...
นี่คือวิธีที่คุณทำในทุบตี
เชลล์สคริปต์นี้จะบอก (เงียบอย่างแท้จริงโดยใช้ Applescript) Terminal.app เพื่อเปิดแท็บใหม่จากนั้นเปลี่ยนเป็นไดเรกทอรีปัจจุบัน:
#!/bin/bash
osascript -e 'tell application "Terminal"' \
-e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' \
-e "do script with command \"cd `pwd`;clear\" in selected tab of the front window" \
-e 'end tell' &> /dev/null
…ใส่เชลล์สคริปต์ข้างต้นในไดเรกทอรีใน$PATH
(เช่น / usr / local / bin) ของคุณและตรวจสอบให้แน่ใจว่าสามารถเรียกใช้งานได้:
$ chmod +x /usr/local/bin/nt
(ที่มา )
หากคุณต้องการเปิดแท็บใหม่นี้ทันทีโดยไม่ต้องเปลี่ยนไฟล์กำหนดค่าหรือติดตั้งปลั๊กอินใหม่ให้รันดังนี้
pwd | pbcopy
จากนั้นเปิดแท็บ Terminal ใหม่ด้วยตนเอง (ด้วย⌘T) และในแท็บใหม่:
cd "`pbpaste`"
คำเตือน : สิ่งนี้จะเขียนทับเนื้อหาของคลิปบอร์ดของระบบ
อีกทางเลือกหนึ่งอีกต่อไปวิธีการที่ไม่เขียนทับคลิปบอร์ด:
pwd > $TMPDIR/wd
เปิดแท็บใหม่ของคุณ
cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd
ตามความคิดเห็นของ Pieter ด้านบนเมื่อplugins=(git osx)
ติดตั้งปลั๊กอินแล้วคุณสามารถพิมพ์tab
และมันจะเปิดแท็บใหม่ในไดเรกทอรีปัจจุบันของคุณ
หากคุณต้องการให้ไดเรกทอรีเปลี่ยนโดยอัตโนมัติเมื่อเปิดแท็บใหม่ให้ใช้ปลั๊กอินdirpersist
ปลั๊กอิน osx จะบันทึกไดเรกทอรีสุดท้ายเท่านั้น แต่คุณต้องเรียกใช้คำสั่งtab
เพื่อเปิดแท็บใหม่ซึ่งไม่สามารถทำได้เสมอไป (ถ้าบอกว่าคุณกำลังใช้งานบางอย่างในแท็บปัจจุบันของคุณ)
การเพิ่มเทอร์มินัลแอปไปยัง. zshrc ไม่ได้ผลสำหรับฉันดังนั้นฉันจึงค้นหาปลั๊กอิน~/.oh-my-zsh/plugins/terminalapp
และมันบอกฉัน:
# This file is intentionally empty.
#
# The terminalapp plugin is deprecated and may be removed in a future release.
# Its functionality has been folded in to the core lib/termsupport.zsh, which
# is loaded for all users. You can remove terminalapp from your $plugins list
# once all your systems are updated to the current version of Oh My Zsh.
แท็บใหม่เปิดอยู่แล้วในโฟลเดอร์เดียวกัน (Cmd + T) สำหรับ windows ใหม่ (Cmd + N) ทางออกจาก Pieter นั้นถูกต้อง:
การตั้งค่า> โปรไฟล์> ค่าเริ่มต้น> ทั่วไป> ไดเรกทอรีการทำงาน> ใช้ตัวเลือกไดเรกทอรีของเซสชันก่อนหน้าอีกครั้ง