หน้าจอ GNU: การเปลี่ยนชื่อหน้าต่างใหม่


20

ฉันสามารถเปลี่ยนชื่อหน้าต่างด้วย Ctrl-a Shift-a แทนที่จะแก้ไขชื่อหน้าต่างด้วยมือหลาย ๆ วิธีจะมีวิธีตั้งชื่อโดยอัตโนมัติหลังจากไดเรกทอรีปัจจุบันหรือไม่?


คุณใช้เปลือกไหน
marco

ฉันใช้ทุบตี
liewl

คำตอบ:


21

ทำให้เชลล์เปลี่ยนชื่อหน้าต่างทุกครั้งที่เปลี่ยนไดเรกทอรีหรือทุกครั้งที่แสดงพรอมต์

สำหรับคุณ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

หรือสำหรับคุณ~/.zshrc(สำหรับผู้ใช้ zsh):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

สำหรับข้อมูลเพิ่มเติมค้นหาภายใต้หัวข้อไดนามิกในคู่มือหน้าจอหรือภายใต้“ ชื่อเรื่อง (หน้าต่างการตั้งชื่อ)” ในหน้า man


ฉันคัดลอกทุบตีหนึ่งทุบตีใน. bashrc ของฉันและมันมอบข้อผิดพลาดเหล่านี้: ทุบตี: PROMPT_COMMAND: บรรทัด 0: ข้อผิดพลาดทางไวยากรณ์ใกล้โทเค็นที่ไม่คาดคิด;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title '
liewl

@ David: ขออภัยจุดคือการสะสมคำสั่งในPROMPT_COMMANDหากมีบางสิ่งบางอย่างอยู่แล้ว แต่ฉันมีองค์ประกอบในลำดับที่ไม่ถูกต้อง
Gilles 'หยุดความชั่วร้าย'

2
เคล็ดลับที่ยอดเยี่ยม @Gilles สำหรับผู้ที่ต้องการรักษาชื่อหน้าต่างให้สั้นคุณสามารถปล่อยเส้นทางแบบเต็มและเก็บชื่อเบสไว้เท่านั้น เพียงแทนที่$HOME/*) HPWD="~${HPWD#$HOME}";;ด้วย*) HPWD=`basename "$HPWD"`;;

0

คุณสามารถใส่สิ่งนี้ลงใน. bashrc เพื่อเปลี่ยนชื่อเทอร์มินัล (ชื่อหน้าต่าง) เป็นไดเรกทอรีสุดท้าย (หรือชื่อไฟล์) ที่คุณอยู่ (กำลังทำงาน)

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

อธิบายเพิ่มเติมได้ที่นี่: ลิงค์

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