สิ่งแวดล้อม:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- เทอร์มินัล GNOME 3.22.1 ใช้ VTE เวอร์ชัน 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (2016 Sep 12, รวบรวม 22 Feb 2017 16:26:11)
- tmux 2.2
ฉันเพิ่งเริ่มใช้ tmux และสังเกตว่าสีของ Vim นั้นเปลี่ยนไปตามว่าฉันกำลังวิ่งอยู่ข้างในหรือข้างนอก tmux ด้านล่างเป็นสกรีนช็อตของ Vim ข้างนอก (ซ้าย) และภายใน (ขวา) ของ tmux ขณะดู Git diff:
TERM
ตัวแปรของฉันคือ
- ภายนอก tmux:
xterm-256color
- ภายใน tmux:
screen-256color
เป็นกลุ่มรายงานประเภทอาคารผู้โดยสารเหล่านี้ตามที่คาดไว้ (ผ่าน:set term?
):
- ภายนอก tmux:
term=xterm-256color
- ภายใน tmux:
term=screen-256color
Vim ยังรายงานว่าทั้งสองอินสแตนซ์กำลังทำงานในโหมด 256 สี (ผ่าน:set t_Co?
):
- ภายนอก tmux:
t_Co=256
- ภายใน tmux:
t_Co=256
มีคำถามที่คล้ายกันหลายข้อเกี่ยวกับการเรียกใช้ Vim ให้ทำงานในโหมด 256 สีใน tmux (คำตอบที่ดีที่สุดที่ฉันพบคือที่นี่ ) แต่ฉันไม่คิดว่านั่นเป็นปัญหาของฉันตามข้อมูลข้างต้น
ฉันสามารถทำซ้ำปัญหานอก tmux ถ้าฉันเรียกใช้ Vim โดยตั้งค่าประเภทเทอร์มินัลเป็นscreen-256color
:
$ TERM=screen-256color vim
เพื่อที่จะทำให้ฉันเชื่อว่ามีเพียงความแตกต่างระหว่างxterm-256color
และscreen-256color
ขั้วความสามารถที่ทำให้เกิดความแตกต่างในสี ซึ่งนำไปสู่คำถามที่โพสต์ในชื่อเรื่อง: อะไรเป็นพิเศษในความสามารถของเทอร์มินัลทำให้สี Vim แตกต่างกัน? ฉันเห็นความแตกต่างระหว่างการทำงาน:set termcap
ภายในและภายนอก tmux แต่ฉันอยากรู้ว่าตัวแปรใดที่ทำให้เกิดความแตกต่างในพฤติกรรม
เป็นอิสระจากคำถามก่อนหน้านี้เป็นไปได้หรือไม่ที่จะให้สี Vim สอดคล้องกันเมื่อทำงานภายในหรือภายนอก tmux? บางสิ่งที่ฉันพยายามรวมถึง:
- การตั้งค่าเทอร์มินัล tmux เริ่มต้นอย่างชัดเจนใช้ใน
~/.tmux.conf
ค่าต่าง ๆ (บางอย่างกับคำแนะนำของคำถามที่พบบ่อยของ tmux ):
ตั้งค่า -g ขั้วเริ่มต้น "หน้าจอ 256 สี" ตั้งค่า -g เริ่มต้นขั้ว "xterm-256color" ตั้งค่า -g ขั้วเริ่มต้น "screen.xterm-256color" ตั้งค่า -g ขั้วเริ่มต้น "tmux-256color"
tmux -2
เริ่มต้นใช้ tmux
ในทุกกรณี Vim ยังคงแสดงสีที่แตกต่างภายใน tmux
xterm-256color
รุ่น (ค้นหา "38; 5;" ในแฟ้ม) screen-256color
แต่ไม่สามารถใน เช่นที่ใดก็ตามที่มี\e[38;5;81m
ในxterm-256color
(สี # 81 ของจานสี 256 สี, สีฟ้ากลาง), screen-256color
มี\e[34m
แทน (สีฟ้ามาตรฐานของจานสี 8 สี) ดังนั้นคำถามที่สำคัญคือทำไมเป็นกลุ่มไม่ใช้จาน 256 TERM=screen-256color
สีในกรณีของ
xterm-256color
รุ่นดูเหมือนจะพิมพ์หน้าจอสองครั้งครั้งแรกด้วยสีแบบดั้งเดิมและจากนั้นด้วยจานสี 256 สี ค้นหาเช่น "F1" ในแฟ้มที่คุณจะพบสองแมตช์ในxterm-256color
ครั้งแรกที่มีสีที่สองด้วย\e[34m
\e[38;5;81m
ฉันไม่รู้ว่าเกิดอะไรขึ้นที่นี่
set -g default-terminal "screen.xterm-256color"
ใน~/.tmux.conf
และโหลดการตั้งค่าใน tmux (<Cs>: แหล่งที่มาของไฟล์ ~ / .tmux.conf) ทำงานให้ฉัน (ฉบับที่ไฮไลท์) ขอบคุณ
script
ต้นvim
ออกvim
แล้วออกจากscript
เปลือกของและแนบtypescript
ไฟล์ผลลัพธ์ได้หรือไม่ จากนั้นทำซ้ำขั้นตอนเดียวกันด้วยTERM=screen-256color vim
แทน