แก้ไขไฮไลต์ใน tmux


18

ฉันพลาดการเน้น (โหมดย้อนกลับ) บนคอนโซลตั้งแต่ฉันเริ่มใช้urxvt + tmuxเป็นเทอร์มินัลหลัก ไฮไลท์ถูกแทนที่ด้วยกับอักษรตัวเอียง- สิ่งที่ดูสวยเย็นในตอนแรก -lessแต่ฉันไม่สามารถหาคำเอียงหนึ่งในพันที่ไม่ใช่ตัวเอียงเมื่อฉันพยายามที่จะค้นหาบางสิ่งบางอย่างใน

สิ่งนี้ทำงานได้อย่างถูกต้องในขณะที่ประเภทเทอร์มินัลถูกตั้งค่าเป็นxterm*โปรไฟล์ (ด้วยเช่นset -g default-terminal "xterm-color"ใน. tmux.conf ) อย่างไรก็ตามทางลัดบางอันใช้งานไม่ได้แอปไม่สามารถรับรูปทรงเรขาคณิตของเทอร์มินัลที่เหมาะสม ... ในกรณีนี้

คำตอบ:


11

ฉันได้พบข้อมูลและโซลูชันเกี่ยวกับมันในหน้าของ tmux:

คำอธิบาย terminfo ของหน้าจอไม่มีโหมดตัวเอียงและมีโหมด standout แทน แต่ใช้ลำดับการหลีกเลี่ยงเดียวกับที่urxvtใช้สำหรับตัวเอียง ซึ่งหมายความว่าแอปพลิเคชัน (เช่นvim) ที่กำลังมองหาตัวเอียงจะไม่พบมันและอาจหันกลับมาแทนที่ในขณะที่แอปพลิเคชัน (เช่นน้อยกว่า) ที่ขอยอดเยี่ยมจะจบลงด้วยตัวเอียงแทนการย้อนกลับ

[แก้ไข 1] แทนที่รายการ terminfo และรับ reverse + ตัวเอียง

(ต่อผู้ใช้!)

ที่จะทำให้การใช้งานทราบว่าtmuxสนับสนุนตัวเอียงและใช้ลำดับหนีที่เหมาะสมสำหรับยอดเยี่ยมที่คุณจะต้องสร้างใหม่terminfoไฟล์ที่มีการปรับเปลี่ยนsgr, smso, rmso, sitmและritmรายการ:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \
  -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

และบอก tmux ให้ใช้ใน~ / .tmux.conf :

set -g default-terminal "screen-it"

หากเทอร์มินัลของคุณรองรับ 256 สีให้ใช้:

$ screen_terminfo="screen-256color"

แทน "หน้าจอ" ดูรายการคำถามที่พบบ่อยรองรับ 256 สีสำหรับข้อมูลเพิ่มเติม โปรดทราบว่า tmux จะยังคงแสดงวิดีโอย้อนกลับบนเทอร์มินัลที่ไม่รองรับตัวเอียง

หากคุณurxvtไม่สามารถแสดงตัวเอียงได้ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานแบบอักษรที่สามารถใช้ตัวเอียงได้เช่นเพิ่มเป็น~ / .Xdefaults :

urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true

[แก้ไข 2] เพียงแทนที่อักขระควบคุมแบบเอียงด้วย reverse

เพิ่มเทอร์มินัลการแทนที่นี้ลงใน~ / .tmux.conf :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'

2
การแก้ไข 1 ดูเหมือนจะใช้งานได้ แต่ปี 2558 อาจเป็นเรื่องยากมาก
user1338062

น่าเสียดายที่ฉันไม่สามารถหาทางออกที่ดีกว่าสำหรับปัญหานี้ + ฉันหยุดค้นหาเมื่อฉันพบสิ่งนี้ในรายชื่อผู้รับจดหมาย tmux ... :(
andras.tim

4
ดีตามtmux คำถามที่พบบ่อย tmux 2.1 ควรแก้ไขพฤติกรรม ดังนั้นฉันคิดว่ามันจำเป็นสำหรับการใช้งานชั่วคราวเท่านั้น ผมเองก็ไม่ได้สิ่งที่ OP กล่าวและการตั้งค่าของฉันไปdefault-terminal xterm
user1338062

บางครั้งมันก็ไม่ดี เช่นเมื่อคุณต้องเข้ากันได้กับ PuTTY คุณไม่สามารถใช้งานได้xtermเฉพาะscreeenรุ่นต่างๆเท่านั้น
andras.tim

1
Fix 1 ใช้งานได้สำหรับฉัน แต่ทำให้โซลาร์เซลล์ของฉันdircolorsหายไป ฉันก็สามารถที่จะแก้ไขได้โดยการเพิ่มรายชื่อของขั้วในTERM screen-it ~/.dircolors
Benjamin W.

4

วิธีที่เร็วกว่า:

set -g terminal-overrides "screen.xterm-new"

ใช้งานได้โดยไม่ต้องใช้เวทย์ใด ๆ เพิ่มเติม (และยังคงมีคำเตือนในคู่มือ tmux เกี่ยวกับประเภทของเทอร์มินัลซึ่งจำเป็นต้องเป็น "หน้าจอ" หรืออนุพันธ์ของมัน)


1
เหมาะกับฉันอย่างสมบูรณ์แบบเช่นwatch -n10 -d COMMAND args..ช่วยให้สามารถตรวจจับการเปลี่ยนแปลงได้ในขณะนี้ (เช่นช่องว่าง! คุณทำช่องว่างตัวเอียงได้อย่างไร) ฉันคิดว่านี่ควรเป็นคำตอบที่ยอมรับได้ หมายเหตุ: เมื่อเทอร์มินัลเปิดอยู่ให้ใช้TERM=screen.xterm-new; export TERM
Tino

2

ฉันเรียกใช้ urxvt ใน arch linux คำตอบของ op ไม่ได้ช่วยฉัน สิ่งนี้ช่วยฉัน:

https://github.com/tmux/tmux/blob/2.1/FAQ#L355-L383


ค้นหาitalicและเรียกว่า; จากนั้นใส่ค่านี้ใน tmux config

set -g default-terminal "tmux"

อย่าใช้ "tmux-256color" (ลองใช้ฉันคิดว่า แต่มันไม่ได้ผลสำหรับฉัน)


ในที่สุดเพิ่มสิ่งนี้ใน rc ของคุณ (.zshrc, .bashrc ฯลฯ ):

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