สูญเสีย colorcheme เป็นกลุ่มในโหมด tmux


228

ฉันใช้ iterm2 และเมื่อฉันอยู่ในโหมด tmux colourscheme ที่ฉันตั้งไว้ในกลุ่มไม่แสดงขึ้นมา เฉพาะโทนสีที่ฉันตั้งไว้ใน iterm ถ้าฉันเรียกใช้เป็นกลุ่มจากเชลล์ colorcheme ปรากฏถูกต้อง - มันก็ต่อเมื่อฉันอยู่ในโหมด tmux

ฉันได้ลองตั้งค่า:colorscheme molokaiเมื่ออยู่ในกลุ่ม (ดูภาพหน้าจอด้านล่าง) และมันไม่เปลี่ยนแปลง - อีกครั้งค่าเริ่มต้น colorcheme สำหรับ iterm2 ยังคงอยู่

ฉันขาดการตั้งค่าเป็น iterm หรือ tmux.conf หรือไม่? dotfles ของฉันขึ้นบน gitHub ที่นี่


31
จะเกิดอะไรขึ้นเมื่อคุณทำ$ tmux -2?
romainl

4
นั่นคือทั้งหมดที่มัน ธง -2 คืออะไร
tristen

11
มันบังคับให้ tmux ทำงานกับ 256 สี
romainl

คำตอบ:


252

ผมมีปัญหาเหมือนกัน. เพียง แต่แตกต่างผมใช้แทนแล้วsolarizemolokai

เพื่อแก้ไขปัญหาฉันได้ตั้งชื่อแทนใน~/.bashrc:

alias tmux="TERM=screen-256color-bce tmux"

และตั้งค่าdefault-terminalตัวเลือกใน~/.tmux.conf:

set -g default-terminal "xterm"

สุดท้ายทำ$ source ~/.bashrcเพื่อโหลดนามแฝงใหม่


20
ฉันใช้สิ่งนี้แทนtmux -2เพราะนี่เป็น verbose มากกว่า
thameera

97
โดยส่วนตัวฉันต้องใช้set -g default-terminal "screen-256color"เพื่อทำงานมากกว่าxtermบน OS X, ใส่ไว้ในกล่อง Ubuntu ฉันอ้างถึงเว็บไซต์นี้: rhnh.net/2011/08/20/vim-and-tmux-on-osx
waffl

7
นามแฝงที่นี่ไม่สมเหตุสมผล: มันทำท่าเหมือน tmux ที่กำลังวิ่งอยู่ในหน้าจอหรือ tmux ซึ่งแทบจะไม่เคยเกิดขึ้นเลย หากต้องการบอก tmux ให้ถือว่าเทอร์มินัลนั้นสนับสนุน 256 สีให้รันtmux -2หรือtmux -2 attach(tmux ตัดสินใจแต่ละครั้งที่คุณแนบเซสชันใหม่หรือที่มีอยู่เข้ากับเทอร์มินัล) alias tmux='tmux -2'นามแฝงที่เหมาะสมจะเป็น ดูการสนับสนุนtmux, TERM และ 256 colors
Gilles 'หยุดความชั่วร้าย'

3
ฉันอ่านคำตอบอื่น ๆ (ไม่พบข้อมูลอ้างอิง) ว่าไม่ใช่วิธีที่ดีในการบังคับใช้ TERM ถึงแม้ว่าฉันจะไม่รู้แน่นอน ตั้งแต่tmux -2ตัวเลือกกับการset -g default-terminal "screen-256color"ทำงานสำหรับฉันนั่นจะเป็นตัวเลือกของฉัน แต่ขอบคุณล่ะ!
marcelocra

5
หากการ.tmux.confตั้งค่าดูเหมือนจะไม่มีผลบังคับใช้ให้ปิดกระบวนการ tmux ทั้งหมดและรีสตาร์ท คุณก็สามารถทำได้set -g default-terminal "screen-256color"โดยไม่ต้องตั้งค่าใด ๆ .bashrcในนามแฝง ผมคิดว่าผู้คนกำลังทำวิธีการแก้ปัญหาเช่นนามแฝงตัวแปรสภาพแวดล้อมเพราะพวกเขาไม่ปิดกระบวนการ tmux .tmux.confทั้งหมดหลังจากการกำหนดค่า
Chev

74

ตามที่ @romainl ระบุไว้ข้างต้นฉันจำเป็นต้องบังคับให้ tmux ใช้ 256 สีโดยการเพิ่ม-2ธง:

$ tmux -2

ฉันเพิ่มalias tmux='tmux -2'ใน bash_profile แล้วดังนั้นฉันจะไม่ลืม :)


ที่จริงแล้วมันไม่ได้บังคับเลย: ฉันไม่ได้ใช้-2แต่ฉันมี 256 สีที่ทำงานใน Vim ใน tmux
romainl

@ การฉีดเป็นสิ่งจำเป็นถ้า tmux ไม่พบเทอร์มินัลของคุณว่ามี 256 สีซึ่งค่อนข้างธรรมดา
Gilles 'ดังนั้นหยุดความชั่วร้าย'

1
@Gilles, เสียงเรียกเข้าไม่ได้ตรวจสอบว่าการสนับสนุนขั้ว 256 สีเพราะเริ่มต้น tmux ของคือTERM ไม่เปลี่ยนแปลงและไม่ได้เปลี่ยนแปลงอะไรสีที่เกี่ยวข้องกับสิ่งที่เป็นกลุ่มข้อมูลที่ได้รับจากสภาพแวดล้อมของมันยังคงเป็นผลตอบแทน ด้วยข้อมูลที่ได้รับ Vim จะทำสิ่งที่ถูกต้อง สิ่งเดียวที่จะต้องตั้งค่าคือ 1. จำลอง terminal ของคุณไปหรือมูลค่าเทียบเท่าชอบและเริ่มต้น 2. tmux ของด้วย screen-2TERM:echo &t_Co8TERMxterm-256colorurxvt-unicode-256colorTERMset -g default-terminal "screen-256color"
romainl

@romainl สภาพแวดล้อมส่วนใหญ่TERMตั้งค่าเป็นxtermไม่ใช่xterm-256colorดังนั้นจึงจำเป็นต้องเรียกใช้tmux -2(หรือTERM=xterm-256color tmuxหรือเปลี่ยน termcap หรือวิธีอื่นในการทำสิ่งเดียวกันให้สำเร็จ)
Gilles 'หยุดความชั่วร้าย'

1
@Gilles ปัญหาคือ -2 ไม่ทำสิ่งใดที่มีผลกระทบต่อพฤติกรรมของ Vim เกี่ยวกับการรองรับสี 256 อันเนื่องจากสิ่งเดียวที่สำคัญสำหรับ Vim คือ TERM ของคุณและจะถูกกำหนดไว้ที่ปลายโซ่: ในตัวคุณ เทอร์มินัลอีมูเลเตอร์ หากคุณ SSH ถึง 5 โฮสต์และตั้งค่าเทอร์มินัลของคุณอย่างถูกต้อง Vim ที่เปิดใช้บนโฮสต์ที่ 5 จะเห็นระยะเวลา 256 สีของคุณและดำเนินการตามนั้น หากคุณใช้ tmux ณ จุดใด ๆ ของเชน -2 จะมีผลกระทบเป็นศูนย์ต่อพฤติกรรมของ Vim เพราะสิ่งที่เห็นคือสภาพแวดล้อมนั้น จำกัด อยู่ที่ 8 สีเนื่องจากหน้าจอเริ่มต้นของ tmux คือ TERM: หน้าจอ, -2 หรือไม่
romainl

72

ฉันลองวิธีแก้ปัญหาทั้งหมดข้างต้นและสิ่งที่ได้ผลที่สุดสำหรับฉันคือการใส่บรรทัดต่อไปนี้ใน.tmux.conf:

set -g default-terminal "xterm-256color"

ฉันใช้ tmux ผ่าน SSH และนี่ก็เป็นสิ่งที่ใช้ได้ผลสำหรับฉันแม้ว่าฉันจะไม่ได้ใช้ xterm แต่เป็นเพียง SSH ปกติ
armen.shimoon

ฉันไม่ได้ใช้มันเกิน ssh และนี่เป็นคำตอบเดียวที่เหมาะกับฉัน เซสชัน iTerm ท้องถิ่นใน OSX 10.9.5
Chev

ใช้งานได้กับฉัน (MacOS Mojave + iTerm2 / Alacritty) ขอบคุณ
Adrian Magdas

31

ฉันเพิ่งค้นพบว่าทำไมฉันถึงสับสนมาก ฉันก็เหมือนกับคนอื่น ๆ ที่นี่กำลังมีปัญหาในการรับการตั้งค่าเทอร์มินัลเริ่มต้นเพื่อให้มีผล ฉันจำได้ว่าฉันมีเซสชั่น tmux ในพื้นหลัง ฉันแนบเซสชันของฉันอีกครั้งปิดกระบวนการของฉันและปิดกระบวนการ tmux ทั้งหมด ครั้งต่อไปที่ฉันรีสตาร์ท tmux การตั้งค่าเทอร์มินัล.tmux.confเริ่มต้นจะเริ่มมีผล ฉันไม่รู้ว่าคนอื่นทำเช่นนี้หรือไม่ แต่ฉันแนะนำให้ปิดกระบวนการ tmux ทั้งหมดก่อนที่จะแก้ไข.tmux.confไฟล์

ผมได้รับการตั้งค่าของฉันในการทำงานบนเครื่องท้องถิ่นของฉัน (OSX 10.9.5 กับ iTerm2) โดยไม่มีการดัดแปลงใด ๆ กับหรือ.bashrc .bash_profileทั้งหมดที่ผมทำก็คือเพิ่มบรรทัดset -g default-terminal "xterm-256color"ไป~/.tmux.confและเริ่มต้นใหม่ทุกกระบวนการ tmux

ผมได้รับการติดตั้งระยะไกลของฉัน (SSH เพื่อ Ubuntu 14.04) .bashrcในการทำงานตรงทางเดียวกันโดยไม่ต้องแก้ไขใด ฉันก็เพิ่มset -g default-terminal "xterm-256color"ไป~/.tmux.confในเครื่องจากระยะไกลของฉันและเริ่มต้นใหม่กระบวนการ tmux ระยะไกล

คุณสามารถทดสอบสิ่งที่ Vim เห็นโดยทำecho $TERMจากภายในเซสชัน tmux มันยังคงบอกว่าscreenเป็นค่าจนกว่าฉันจะรีสตาร์ทกระบวนการ tmux ทั้งหมด ณ จุดที่มันสะท้อนให้เห็นxterm-256colorตามที่คาดไว้

หวังว่าจะช่วย


1
ฉันยืนยันในระบบปฏิบัติการอีกหลายระบบตั้งแต่โพสต์นี้ปิดกระบวนการทั้งหมดและตั้งค่าdefault-terminalตัวเลือกในซึ่งใช้งาน.tmux.confได้ 100% ของเวลา
Chev

2
ฉันด้วย! ฉันจะใช้เวลาน้อยลงถ้าคำตอบนี้ออกไปไกลกว่านี้
Sigfried

21

ดังนั้นนี่เป็นบิตที่ค้าง แต่อาจมีมูลค่าการกล่าวขวัญว่าการใช้หน้าจอมักจะทำลายปุ่ม Home และ End การใช้

export TERM="xterm-256color"

ในควรรักษาการทำงานของสิ่งเหล่านี้และอนุญาตให้โทนสี (หรือ powerline) ทำงานได้


ขอบคุณที่ชี้นำสิ่งนี้ ฉันไม่รู้ มันดูเหมือนว่าจะทำงานให้กับ Debian derv จากสิ่งที่ฉันเคยเห็น ในการป้องกันของฉันโพสต์ในการอ้างอิงถึง OSX
Jpatrick

tmux 1.9a, OSX 10.9.2, iTerm2 Build 1.0.0.20130622 export TERM = "xterm-256color" ใน. bash_profile จากนั้นตั้งค่า iterm เป็น xterm-256-color ทำงานให้ฉัน ไม่จำเป็นต้องตั้งค่าคอนฟิกูเรชัน tmux ใด ๆ
agenteo

14

ฉันต้องการกลุ่มเพื่อแสดงอย่างถูกต้องกับ tmux ใน terminal บน ubuntu และ cygwin / mintty บน windows ฉันได้มันมาทำงานโดยรวมคำตอบเช่นนี้

ใน. bashrc:

alias tmux="tmux -2"

ใน. vimrc:

" use 256 colors in terminal
if !has("gui_running")
    set t_Co=256
    set term=screen-256color
endif

" fix cursor display in cygwin
if has("win32unix")
    let &t_ti.="\e[1 q"
    let &t_SI.="\e[5 q"
    let &t_EI.="\e[1 q"
    let &t_te.="\e[0 q"
endif

ตามคำตอบของคำถามนี้หน้าวิกินี้เป็นกลุ่มและคำถามเคอร์เซอร์บล็อกนี้


ฉันมีปัญหากับ mintty และการเพิ่มการกำหนดค่ากลุ่มสำหรับฉัน ฉันไม่จำเป็นต้องทำtmuxนามแฝงด้วยซ้ำ
trigoman

@trigoman เหมือนกันสำหรับฉันเช่นกันฉันเพิ่งต้องอัปเดต. vimrc
Masood Alam

ฉันลองคำแนะนำก่อนหน้านี้ทั้งหมด เพิ่งเพิ่มset t_Co=256ไปยัง. vimrc และได้รับการแก้ไขแล้ว ฉันไม่จำเป็นต้องสร้างtmuxนามแฝง
Mike

11

ฉันลองทำตามคำแนะนำทั้งหมดข้างต้นแล้วและฉันพบว่าสิ่งที่สำคัญที่สุดคือฉันต้องเพิ่มบรรทัดต่อไปนี้ในไฟล์. bashrc ของฉันอย่างชัดเจน

export TERM=screen-256color

ฉันไม่รู้ว่าทำไม alias tmux = "TERM = screen-256color-bce tmux" ไม่ทำงาน ฉันใช้ Sierra 10.12.1


นี่คือสิ่งที่ได้ผลสำหรับฉัน ส่งออกธรรมดาของ TERM +1
markovchain

10

ในกรณีที่ทุกคนต้องการการสนับสนุนสี 24 บิต:

Tmux รองรับสี 24 บิตในเวอร์ชัน 2.2 หากเทอร์มินัลของคุณรองรับสี 24 บิตให้เพิ่มเทอร์มินัลของคุณในการตั้งค่าแทนที่เทอร์มินัล ตัวอย่างเช่น,

set -ga terminal-overrides ",xterm-256color:Tc"

รายการตรวจสอบสภาพแวดล้อมของฉัน:

  • macOS Sierra 10.12.3
  • iTerm2 3.0.14 (ประเภทเทอร์มินัลรายงานคือxterm-256color)
  • neovim 0.1.7 (เปิดใช้งานสี 24 บิตโดยการเพิ่ม: xterm-256colorไปยัง.vimrc)
  • tmux 2.3 (เพิ่มset -ga terminal-overrides ",xterm-256color:Tc"ไปยัง.tmux.conf)

ไม่มีอะไรที่ฉันจำเป็นอื่น ๆ ที่จะเพิ่มในหรือ.bashrc.zshrc

หวังว่านี่จะช่วยได้


สิ่งเดียวที่เหมาะกับฉัน สิ่งนี้ทำอะไรกันแน่?
volk

6

เนื่องจากนี่เป็นผลลัพธ์แรกของ Google และเนื่องจากไม่มีสิ่งใดที่ได้รับการช่วยเหลือดังที่กล่าวไว้ข้างต้น ... ต้องการโพสต์สิ่งนี้เพื่อให้บางคนอาจเห็นว่ามีประโยชน์

ใน.vimrc:

set background=dark
set t_Co=256

HTH


ทดสอบสองบรรทัดนี้แล้วและใช้งานได้ดีกับ Vim ของฉันใน WSL-Windows10
llinfeng

1
ขอบคุณมาก. สิ่งนี้ใช้ได้กับ Ubuntu 18 กับ gnome-terminal
Roymunson

4

การเพิ่มบรรทัดต่อไปนี้ใน. tmux.conf ทำงานกับฉันด้วย macOS Sierra 10.12.6

ตั้งค่า -g ขั้วเริ่มต้น "หน้าจอ 256 สี"


กันที่นี่ ขอบคุณ @waffl สำหรับการแก้ปัญหานี้!
Adam Erickson

3

หากคุณพบว่าตัวเองเป็นคนเดียวกับฉันไม่มีสิ่งใดที่ได้ผลดีกว่าลอง ..

ใน.tmux.conf:

set -g default-terminal "xterm"

ใน bash config (อาจจะ.bashrcหรือ.bash_profile):

alias tmux="tmux -2"

จากนั้นเรียกใช้:

killall tmux

จากนั้นเรียกใช้ tmux อีกครั้ง


3

หากคุณใช้tmuxinatorหรือmuxคุณจะต้องเพิ่มสิ่งเหล่านี้ใน.bashrcหรือ.zshrc:

alias tmux='TERM=screen-256color tmux -2'
alias tmuxinator='TERM=screen-256color tmuxinator'
alias mux='TERM=screen-256color mux'

แรงเหล่านี้ในการใช้ 256 สีในอาคารผู้โดยสาร

จากนั้นtmux, tmuxinatorและmuxคำสั่งจะทำงานทั้งหมด



2

เพิ่งต้องจัดการกับปัญหานี้และแม้ว่าคำตอบที่โพสต์ก่อนหน้านี้ทั้งหมดจะเป็นประโยชน์พวกเขาไม่ได้แก้ปัญหาในกรณีของฉัน

ปัญหาของฉันได้รับการแก้ไขโดยการลบบรรทัดต่อไปนี้ใน.vimrc:

set termguicolors

ซึ่งก็คือ redcake พร้อมคำสั่งอื่นอยู่ดี

ตอนนี้มีบรรทัดต่อไปนี้ที่พบในผู้ใช้งานก่อนหน้านี้ใน.tmux.conf:

export TERM="screen-256color"

ทั้งหมดเป็นสิ่งที่ดีและมีสีสัน


2

ฉันลบบรรทัดออกset termguicolorsแล้ว แต่มันไม่ทำงาน การตั้งค่าset notermguicolorsแทนในการ.vimrcทำงาน


1

จากหน้า tmux ให้เพิ่มแฟล็กดังนี้:

tmux -2

-2แฟล็กนี้บังคับให้ tmux รันบนโหมด 256 สี

มันใช้งานได้สำหรับฉัน


1

ฉันไม่ได้มีโชคดีมากพยายามที่จะส่งออกที่แตกต่างกันหรือชุดเริ่มต้นขั้วในของฉันTERM.tmux.conf

โซลูชันของฉันสำหรับการแก้ไขสี vim ภายใน tmux คือการเพิ่มบรรทัดนี้ไปที่.tmux.conf:

set -g terminal-overrides 'xterm:colors=88'

ฉันไม่แน่ใจว่าทำไมการลบล้างนี้จึงเป็นสิ่งจำเป็นเนื่องจากฉันTERM=xtermและฉันได้ตั้งค่า iTerm เป็น xterm ด้วย แต่ดูเหมือนว่าจะใช้งานได้


0

ฉันใช้ Ubuntu bionic 18.04.4 LTS และ tmux 2.6 ฉันมีปัญหาเดียวกันและสามารถแก้ไขได้โดยเพียงเพิ่มสิ่งนี้ลงใน. bashrc

export TERM=screen-256color

และแน่นอนอย่าลืมที่จะแหล่งมัน source ~/.bashrc

หรือเพียงแค่รีสตาร์ท teminal ของคุณ

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