Layar GNU: perubahan nama jendela baru

20

Saya dapat mengubah nama jendela dengan Ctrl-a Shift-a. Alih-alih mengedit beberapa nama jendela dengan tangan, apakah ada cara untuk membuatnya secara otomatis dinamai direktori saat ini?

liewl
sumber
Shell mana yang Anda gunakan?
marco
Saya menggunakan bash.
liewl

Jawaban:

21

Buat shell Anda mengubah judul jendela setiap kali itu mengubah direktori, atau setiap kali itu menampilkan prompt.

Untuk Anda ~/.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

Atau untuk Anda ~/.zshrc(untuk pengguna zsh):

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

Untuk informasi lebih lanjut, cari di bawah judul Dinamis dalam manual Layar, atau di bawah "Judul (jendela penamaan)" di halaman manual.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Saya menyalin bash yang ada di .bashrc saya dan mengeluarkan kesalahan ini: bash: PROMPT_COMMAND: baris 0: kesalahan sintaksis dekat token yang tidak terduga ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title '
liewl
@ David: Maaf, intinya adalah untuk mengakumulasi perintah PROMPT_COMMANDjika sudah ada sesuatu, tetapi saya memiliki komponen dalam urutan yang salah.
Gilles 'SO- stop being evil'
2
Trik hebat @Gilles. Bagi mereka yang suka membuat judul jendela singkat, Anda dapat menghapus path lengkap dan hanya menyimpan nama dasarnya. Cukup ganti $HOME/*) HPWD="~${HPWD#$HOME}";;dengan*) HPWD=`basename "$HPWD"`;;
0

Anda bisa memasukkan ini ke .bashrc untuk mengubah nama terminal (nama jendela) ke direktori terakhir (atau nama file) tempat Anda bekerja (bekerja).

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

lebih banyak dijelaskan di sini: tautan

B.Kocis
sumber