สีไม่ถูกต้องกับ vim ใน iTerm2 โดยใช้ Solarized


84

ฉันมีปัญหาแปลก ๆ กับ iTerm2 ใน terminal vim (non-gui) และโทนสีโซลาร์ไลซ์ ก่อนอื่นฉันได้ตั้งค่า iTerm2 ให้ใช้โทนสีที่มืดแสงอาทิตย์

ฉันยังใช้โซลาร์ไลซ์เป็นกลุ่ม ฉันมีบรรทัดต่อไปนี้ใน. vimrc ของฉัน

set background=dark
colorscheme solarized

ในเทอร์มินัลรูปแบบสีดูไม่ถูกต้อง: กลุ่มคอนโซล

สำหรับการอ้างอิงนี่คือลักษณะที่ปรากฏภายใต้ MacVim (gui vim) กุยเป็นกลุ่ม

ฉันต้องเปลี่ยนอะไรใน iTerm หรือ. vimrc เพื่อให้สีดูถูกต้องในกลุ่มคอนโซลของฉัน

คำตอบ:


118

สิ่งที่ต้องตรวจสอบมีดังนี้

  1. ใน iTerm2 ใน Preferences -> Profiles -> Terminal ภายใต้ "Terminal Emulation" คุณมี "Report Terminal Type:" ตั้งค่าเป็น xterm-256color

  2. ใน. vimrc ของคุณมีตัวเลือกบางอย่างที่คุณสามารถตั้งค่าเพื่อให้แน่ใจว่าใช้ 256 สี:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    และหนึ่งในนั้นควรใช้ได้ แต่ # 1 ก่อน

แต่ถ้าคุณใช้ค่าเริ่มต้นที่สร้างขึ้นในกลุ่ม Snow Leopard จะไม่ทำงานเนื่องจากไม่ได้สร้างขึ้นด้วยการรองรับ 256 สี ฉันเชื่อว่าเวอร์ชันที่สร้างขึ้นใน Lion ทำได้

แก้ไข:จากความคิดเห็นหลายประการเกี่ยวกับคำตอบนี้ฉันได้ลบlet g:solarized_termcolors = 256บรรทัดออกจาก.vimrcตัวอย่างด้านบน ดูเหมือนว่าอาจเป็นปัญหาสำหรับบางคน อีกคนบอกว่าการเพิ่มเส้นlet g:solarized_termcolors = 16ช่วยแก้ปัญหาการแสดงสี ระยะทางของคุณเองอาจแตกต่างกันไป

ประการที่สองแก้ไข:ถ้าคุณโหลดจานสี solarized เข้า iTerm2 let g:solarized_termcolors=16แล้วคุณจะต้อง เฉพาะในlet g:solarized_termcolors=256กรณีที่คุณไม่ได้ใช้จานสีแสงอาทิตย์เป็นสีที่ตั้งไว้ล่วงหน้าของ iTerm2


13
ที่จริงแล้ว "let g: solarized_termcolors = 256" เป็นสาเหตุของการแสดง Solarized ไม่ถูกต้องสำหรับฉัน ตาม git repo ( github.com/vim-scripts/Solarized ) "หมายเหตุสำคัญสำหรับผู้ใช้เทอร์มินัล:" คุณควร "ให้ g: solarized_termcolors = 16"
สายเพอร์ชาร์ด

3
หากคุณกำลังใช้โทนสี solarized กับขั้ว 16 สี ANSI ของคุณจะถูกตั้งค่าสี solarized let g:solarized_termcolors=16ซึ่งในกรณีที่คุณต้องการชุด ถ้าคุณใช้ 256 มันจะใกล้เคียง แต่พื้นหลังจะเป็นสีเทาแทนที่จะเป็นสีน้ำเงินน้ำทะเลลึก
ปาร์คเกอร์เซลเบิร์ต

2
ดูเหมือนว่า256ให้พื้นหลังเป็นสีเทาแทนสีน้ำเงินเข้มบน Lion แต่16ดูเหมือนว่าจะเหมือนกับการละเว้นตัวแปรนั้นจาก vimrc ของฉัน อืมสีเทาเข้มดีกว่าสีเทาอ่อนที่ฉันได้รับมาก่อน
styfle

1
@SaiPerchard ควรเพิ่มความคิดเห็นในคำตอบ สำหรับฉันนี่คือสิ่งที่แก้ไขสีพื้นหลังที่ไม่ถูกต้อง
Marten Sytema

1
ไม่ได้ผลสำหรับฉัน: stackoverflow.com/a/12969298/1945990ทำ ITerm ธีมโซลาร์ไลซ์บวกเป็นกลุ่มธีมโซลาร์ไลซ์
Mike W

91

คำตอบข้างต้นไม่ได้ผลสำหรับฉัน

ฉันใช้ iTerm2 กับ vim 7.3 บน OS X 10.7.4

หากวิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับคุณเช่นกันให้ลองทำเช่นนี้

syntax on
set background=dark
let g:solarized_termtrans = 1
colorscheme solarized

อัปเดต: จากข้อมูลของ Jim Stewart สิ่งนี้ใช้ได้กับKittyด้วย


เหมือนกันสำหรับฉันที่นี่ ... ขอบคุณสำหรับวิธีแก้ปัญหา!
freitass

2
ฉันใช้ KiTTY (อนุพันธ์ของ PuTTY) ใน Windows 7 และlet g:solarized_termtrans = 1แก้ไขปัญหาสำหรับฉันที่สีพื้นหลังบนเส้นว่างเป็นสีเทา แต่สีพื้นหลังของบรรทัดที่มีข้อความเป็นสีดำหลังเนื้อหา
Jim Stewart

พวกเขาไม่ใช่คนดำ :(
Setheron

หากคุณใช้โทนสีอื่นคุณสามารถทำได้hi Normal ctermbg=NONEเนื่องจากโดยพื้นฐานแล้วนั่นคือสิ่งที่termtransทำใน
โซลาร์ไลซ์

1
นี่ใกล้เคียงกับการทำงานมากที่สุดตั้งค่าสีพื้นหลังได้ถูกต้อง แต่เคอร์เซอร์ของฉันคอลัมน์สีและคอลัมน์หมายเลขบรรทัดทั้งหมดมีพื้นหลังสีดำ ทำไมไม่มีอะไรง่ายเลย!
Ian Vaughan

13

https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized

ดาวน์โหลดแพ็คเกจ Solarized ( https://github.com/altercation/solarized ) และทำตามคำแนะนำ:

เปิด iTerm 2 เปิดการตั้งค่าคลิกที่ไอคอน "โปรไฟล์" (เดิมชื่อที่อยู่เดิมคือที่คั่นหน้า) ในแถบเครื่องมือการตั้งค่าจากนั้นเลือกแท็บ "สี" คลิกที่ "load presets" และเลือก "import ... " เลือกไฟล์ธีม Solarized Light หรือ Dark

ตอนนี้คุณได้โหลดค่าที่ตั้งไว้ล่วงหน้าของสี Solarized ลงใน iTerm 2 แล้ว แต่ยังไม่ได้ใช้ หากต้องการใช้เพียงแค่เลือกโปรไฟล์ที่มีอยู่จากหน้าต่างรายการโปรไฟล์ทางด้านซ้ายหรือสร้างโปรไฟล์ใหม่ จากนั้นเลือก Solarized Dark หรือ Solarized Light ที่ตั้งไว้ล่วงหน้าจากรายการแบบเลื่อนลง "Load Presets"

====================================

หรือ:

cd ~/.vim/bundle
git clone git://github.com/altercation/vim-colors-solarized.git

แก้ไข. vimrc

ธีมสีเข้ม:

syntax enable
set background=dark
colorscheme solarized

เบา

syntax enable
set background=light
colorscheme solarized

2
ไม่มีคำตอบก่อนหน้านี้ช่วยแก้ปัญหาของฉันได้ แต่คำตอบนี้ตอบได้ ปรากฎว่าสิ่งที่ขาดหายไปสำหรับฉันคือพรีเซ็ตสี
Sophia Feng

10

สิ่งนี้ใช้ได้กับฉันใน OS X 10.9.1 ใน iTerm 2 และ Terminal ความผิดพลาดอย่างหนึ่งที่ฉันทำคือการวางการประกาศ colorscheme ก่อนการตั้งค่า termtrans และ termcolors (และฉันต้องการทั้งสองอย่างนี้เพื่อให้มันใช้งานได้) อย่างที่คนอื่นบอกฉันตั้งค่าประเภทเทอร์มินัลเป็น xterm-256color

if !has("gui_running")
    let g:solarized_termtrans=1
    let g:solarized_termcolors=256
endif

colorscheme solarized
set background=dark

7

ฉันต่อสู้กับปัญหาเดียวกันบน OSX 10.11.6, iTerm2 Build 3.0.12

นี่คือการแก้ไขของฉันสำหรับมัน

  1. .vimrc

    ไวยากรณ์เปิดใช้งาน set background = dark colorscheme solarized

  2. ชุดรายงานประเภท Terminal xterm-256colorเพื่อ

ใส่คำอธิบายภาพที่นี่

  1. ตั้งค่าสีล่วงหน้าในโปรไฟล์เป็น Solarized Dark

ใส่คำอธิบายภาพที่นี่


Upvote เพราะนี่เป็นเบาะแสที่ฉันต้องลองใช้การตั้งค่าสีที่แตกต่างกันซึ่งนำฉันไปสู่การค้นพบว่ารหัสหนีสีที่ผ่านมา 256 ได้รับการปฏิบัติที่แตกต่างกันบน mac เทียบกับ linux ใน Mac สีที่ผ่านมา 256 สีดูเหมือนจะถูกปรับให้เรียบกว่าสี ANSI 8 สีที่เลือกไว้ในขณะที่ linux ดูเหมือนจะทำโมดูลัสที่ล้อมรอบและเลือกสี
Eric Leschinski

6

จากผู้สร้าง: http://ethanschoonover.com/solarized/vim-colors-solarized

หมายเหตุสำคัญสำหรับผู้ใช้เทอร์มินอล:

หากคุณกำลังจะใช้ Solarized ในโหมด Terminal (เช่นไม่ใช่ในเวอร์ชัน GUI เช่น gvim หรือ macvim) โปรดพิจารณาตั้งค่า colorcheme ของโปรแกรมจำลองเทอร์มินัลของคุณเพื่อใช้พาเล็ต Solarized ฉันได้รวมจานสีสำหรับโปรแกรมจำลองเทอร์มินัลยอดนิยมรวมถึง Xdefaults ในการดาวน์โหลด Solarized อย่างเป็นทางการจากหน้าแรก Solarized หากคุณใช้ Solarized โดยไม่มีสีเหล่านี้ Solarized จะต้องได้รับแจ้งให้ลดระดับสีลงเป็นชุดที่เข้ากันได้กับจานสีเทอร์มินัล 256 ที่ จำกัด (ในขณะที่การใช้ค่าสี 16 ansi ของเทอร์มินัลคุณสามารถตั้งค่าเฉพาะที่ถูกต้องสำหรับ Solarized ได้ จานสี)

หากคุณใช้สีเทอร์มินัลที่กำหนดเอง solarized.vim ควรทำงานนอกกรอบ หากคุณใช้โปรแกรมจำลองเทอร์มินัลที่รองรับ 256 สีและไม่ต้องการใช้สีเทอร์มินัล Solarized ที่กำหนดเองคุณจะต้องใช้ชุดสี 256 สีที่เสื่อมสภาพ ในการทำเช่นนั้นให้เพิ่มบรรทัดต่อไปนี้ก่อนเส้นสีโซลาร์ไลซ์ของ colorchem:

let g:solarized_termcolors=256

ขอแนะนำอีกครั้งเพียงแค่เปลี่ยนสีเทอร์มินัลของคุณเป็นค่า Solarized ด้วยตนเองหรือผ่านหนึ่งในโครงร่างเทอร์มินัลที่มีให้สำหรับการนำเข้า


นี่เป็นวิธีเดียวที่ฉันจะทำให้ iTerm2 ใช้สีโซลาร์ไลซ์ใน MacVim ที่ไม่ใช่ GUI ได้
Aaron Tribou

4

คำตอบของ Bill Turner ใช้งานได้ แต่มีวิธีทำให้สีตรงกับ MacVim ทุกประการ Solarized ได้รับการสนับสนุนโดยเฉพาะสำหรับ iTerm2 รวมถึงโปรแกรมจำลองเทอร์มินัลอื่น ๆ

  1. ไปที่หน้า github iterm2-colors-solarized
  2. ทำตามคำแนะนำใน "การติดตั้ง"
  3. ตรวจสอบว่า. vimrc ของคุณมีบรรทัด colorscheme solarized

สิ่งนี้ควรตั้งค่า vim colors ใน iTerm2 ให้ตรงตามที่อยู่ใน gui editors


ตามที่คำตอบแนะนำคำตอบของ Bill Turner ก็ถูกต้องเช่นกัน แต่นี่เป็นวิธีที่เป็นทางการ (จึงถูกต้อง) ในการตั้งค่าsolarizedธีม
Can

1

วิธีง่ายๆในการแก้ปัญหานี้คือ:

ในสี dir บน vim-color-solarized มีชื่อ 'solarozed.vim'

เปิดไฟล์นี้และค้นหา:
exe "let s: bg_back = '" .s: vmode. "bg =". s: back. "'"

แทนที่เป็น:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

สำหรับสิ่งที่ยังคงมีปัญหาเช่นเดียวกับฉันฉันได้ติดตั้ง iterm2 solarized color profileแล้ว การติดตั้งvim-color-solarizedไปยังกลุ่ม vim และทำตามคำแนะนำนั้นไม่จำเป็นและไม่สามารถใช้ร่วมกันได้ มีปัญหาไฮไลต์ตลก ๆ เช่นในการจับภาพหน้าจอด้านบน

บทเรียนที่ได้รับ: อย่าทำทั้งสองอย่าง


0

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


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