screen + vim - มีวิธีใดที่จะตั้งชื่อหน้าต่างหน้าจอโดยอัตโนมัติเพื่อเปิดชื่อไฟล์เป็นกลุ่ม?


10

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

คำตอบ:


5

ตั้งค่าตัวเลือกtitle สิ่งนี้ทำงานนอกกรอบสำหรับฉันใน xterm และไม่ชอบ แต่ในหน้าจอ เคล็ดลับนี้ใช้งานได้ :

if &term == "screen"
  set t_ts="\ek"
  set t_fs="\e\\"
  set title
endif

แนวทางที่แตกต่างคือการเขียนpreexecฟังก์ชั่นในเชลล์ของคุณซึ่งตั้งชื่อหน้าต่างเป็นคำสั่งที่กำลังเรียกใช้ Zsh รองรับpreexecโดยกำเนิดและbash ก็สามารถทำได้เช่นกัน นี่เป็นตัวอย่าง zsh


สวัสดี ไม่ได้ผลสำหรับฉัน แต่ฉันคิดว่าเป็นเพราะไฟล์. screenrc ของฉันตั้งค่าไว้ 1 termcapinfo xterm * ti @: te @ 2 hardstatus alwayslastline 3 สตริง hardstatus '% {gk} [% {G}% H% {g}] [% =% {wk}%?% - Lw%?% {= b kR} (% {W}% n *% f% t%? (% u)%?% {= b kR})% {= kw}%?% + Lw%?%?% =% {g}] [% {Y}% l% {g}]% {= b C} [% m /% d% c]% {W} '
4785

@ user4785: หากพรอมต์ของคุณสามารถตั้งชื่อหน้าจอหน้าต่างได้ Vim ก็สามารถทำได้เช่นกัน พรอมต์ของคุณคืออะไร? .vimrcตัวอย่างข้อมูลของฉันทำงานโดยไม่มีคุณ.screenrcหรือไม่
Gilles 'หยุดความชั่วร้าย'

1

ฉันใช้วิธีแฮ็กเกอร์นิดหน่อย: การใช้ tcsh ฉันใส่สิ่งต่อไปนี้ใน. cshrc ของฉัน

# escape sequence to set the screen title
alias stitle 'echo -n "^[k\!*^[\\"'
# shorthand to set the screen title to the hostname
alias H stitle `hostname -s`
# shorthand to set the screen title to the filename, launch vim, and then set it back
alias vis 'stitle \!* ; vim \!* ; H'

ตราบใดที่คุณจำไว้ว่าให้ใช้ Vis แทนเสียงเรียกเข้าเมื่อคุณต้องการให้ชื่อนั้นใช้งานได้

ฉันยังเพิ่ม

set notitle

เป็น. vimrc ของฉันเพื่อป้องกันไม่ให้ vim ตั้งชื่อหน้าจอหน้าต่างที่กำลังทำงานอยู่

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