Màu sắc không chính xác với vim trong iTerm2 sử dụng Phân cực


84

Tôi đang gặp sự cố lạ với iTerm2, trong vim đầu cuối (không phải gui) và bảng màu phân cực. Đầu tiên, tôi đã thiết lập iTerm2 để sử dụng bảng màu phân cực tối.

Tôi cũng đang sử dụng phân cực cho vim. Tôi có những dòng sau trong .vimrc của mình

set background=dark
colorscheme solarized

Trong thiết bị đầu cuối, bảng màu có vẻ không chính xác: giao diện điều khiển vim

Để tham khảo, đây là cách nó trông như thế nào trong MacVim (gui vim) gui vim

Tôi cần thay đổi điều gì trong iTerm hoặc .vimrc để màu sắc trông chính xác trong vim bảng điều khiển của tôi?

Câu trả lời:


118

Một số điều cần kiểm tra:

  1. Trong iTerm2, trong Tùy chọn -> Hồ sơ -> Thiết bị đầu cuối, trong "Mô phỏng thiết bị đầu cuối", bạn có "Loại thiết bị đầu cuối báo cáo:" được đặt thành xterm-256color.

  2. Trong .vimrc của bạn, có một số tùy chọn bạn cũng có thể đặt để đảm bảo rằng nó sử dụng 256 màu:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    Và một trong số đó sẽ hoạt động, nhưng số 1 trước tiên.

NHƯNG, nếu bạn đang sử dụng vim mặc định, được tích hợp sẵn trên Snow Leopard, nó sẽ không hoạt động, vì nó không được xây dựng với hỗ trợ 256 màu. Tôi tin rằng phiên bản cài sẵn trong Lion không.

Chỉnh sửa: Dựa trên một số nhận xét về câu trả lời này, tôi đã xóa let g:solarized_termcolors = 256dòng khỏi .vimrcví dụ trên. Có vẻ như đó có thể là một vấn đề đối với một số người. Một người khác nói rằng việc thêm dòng đã let g:solarized_termcolors = 16khắc phục sự cố hiển thị màu. Số dặm của riêng bạn có thể thay đổi.

Chỉnh sửa thứ hai: Nếu bạn đã tải bảng màu phân cực vào iTerm2, thì bạn phải let g:solarized_termcolors=16. Chỉ let g:solarized_termcolors=256khi bạn không sử dụng bảng phân cực làm cài đặt sẵn màu iTerm2 của mình.


13
Trên thực tế, "let g: solarized_termcolors = 256" là nguyên nhân dẫn đến việc hiển thị phân cực không chính xác đối với tôi. Theo git repo ( github.com/vim-scripts/Solarized ), "LƯU Ý QUAN TRỌNG CHO NGƯỜI DÙNG CUỐI CÙNG:", bạn nên "để g: solarized_termcolors = 16".
Sai Perchard

3
Nếu bạn đang sử dụng bảng màu phân cực với thiết bị đầu cuối của mình, 16 màu ANSI sẽ được đặt thành màu phân cực, trong trường hợp đó bạn muốn đặt let g:solarized_termcolors=16. Nếu bạn sử dụng 256, nó sẽ gần, nhưng nền sẽ có màu xám thay vì màu xanh biển sâu.
Parker Selbert

2
Có vẻ như 256cho tôi nền màu xám thay vì màu xanh đậm trên Lion nhưng 16trông giống hệt như việc bỏ qua biến đó khỏi vimrc của tôi. Ồ, màu xám đậm tốt hơn màu xám nhạt mà tôi đã nhận được trước đây.
súng trường vào

1
@SaiPerchard nhận xét nên được thêm vào câu trả lời. Đối với tôi, đây là thứ đã sửa sai màu nền.
Marten Sytema

1
Không hoạt động với tôi: stackoverflow.com/a/12969298/1945990 đã làm được. ITerm, chủ đề phân cực cộng với chủ đề phân cực vim.
Mike W

91

Các câu trả lời trên không làm việc cho tôi.

Tôi đang sử dụng iTerm2 với vim 7.3 trên OS X 10.7.4.

Nếu các giải pháp trên không hiệu quả với bạn, hãy thử cách này

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

Cập nhật: Theo Jim Stewart, điều này cũng hoạt động trên Kitty .


Tôi cũng vậy ở đây ... Cảm ơn vì giải pháp đó!
freitass

2
Tôi đang sử dụng KiTTY (phái sinh PuTTY) trên Windows 7 và đã let g:solarized_termtrans = 1khắc phục sự cố cho tôi trong đó màu nền trên các dòng trống là màu xám, nhưng màu nền trên các dòng có văn bản là màu đen sau nội dung.
Jim Stewart

họ không phải là người da đen :(
Setheron

Nếu bạn đang sử dụng bất kỳ màu sắc khác, bạn có thể hi Normal ctermbg=NONE, vì đó là cơ bản những gì termtranskhông trong solarized (như xa như tôi có thể nói từ nguồn của họ)
Achal Dave

1
Đây là cách gần nhất để làm việc, nó đặt màu nền chính xác, nhưng dòng con trỏ, cột màu và cột số dòng của tôi đều có nền đen. Tại sao không có gì là dễ dàng!
Ian Vaughan

13

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

Tải xuống gói Solarized ( https://github.com/altercation/solarized ) và làm theo hướng dẫn:

Mở iTerm 2, mở Tùy chọn, nhấp vào biểu tượng "Hồ sơ" (trước đây là Địa chỉ, trước đây là Dấu trang) trên thanh công cụ tùy chọn, sau đó chọn tab "màu sắc". Nhấp vào "tải cài đặt trước" và chọn "nhập ...". Chọn tệp chủ đề Solarized Light hoặc Dark.

Bây giờ bạn đã tải các cài đặt trước màu Phân cực vào iTerm 2, nhưng chưa áp dụng chúng. Để áp dụng chúng, chỉ cần chọn một hồ sơ hiện có từ cửa sổ danh sách hồ sơ ở bên trái hoặc tạo một hồ sơ mới. Sau đó chọn cài đặt trước Bóng tối hoặc Ánh sáng phân cực phân cực từ menu thả xuống "Tải cài đặt sẵn".

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

Hoặc là:

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

Sửa đổi .vimrc

Chủ đề tối:

syntax enable
set background=dark
colorscheme solarized

Ánh sáng

syntax enable
set background=light
colorscheme solarized

2
Không có câu trả lời nào trước đây giải quyết được vấn đề của tôi nhưng câu này thì có. Nó chỉ ra rằng những gì còn thiếu đối với tôi là các cài đặt trước màu sắc.
Sophia Feng

10

Điều này đã làm việc cho tôi trong OS X 10.9.1 trong iTerm 2 cũng như Terminal. Một sai lầm tôi đã mắc phải là đặt khai báo colorcheme trước cài đặt hệ thống hạn chế và màu sắc (và tôi cần cả hai điều này để làm cho nó hoạt động). Như những người khác đã nói, tôi đặt loại thiết bị đầu cuối của mình thành xterm-256color

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

colorscheme solarized
set background=dark

7

Tôi đã vật lộn với cùng một vấn đề trên OSX 10.11.6, iTerm2 Build 3.0.12.

Đây là bản sửa lỗi của tôi cho nó.

  1. .vimrc

    cú pháp cho phép set background = dark colorcheme solarized

  2. Đặt Loại đầu cuối báo cáo thành xterm-256color.

nhập mô tả hình ảnh ở đây

  1. Đặt cài đặt trước màu trong cấu hình thành Tối phân cực

nhập mô tả hình ảnh ở đây


Ủng hộ vì đây là manh mối tôi cần để thử các cài đặt trước màu khác nhau dẫn tôi đến việc phát hiện ra rằng các mã thoát màu trước 256 được xử lý khác nhau trên mac và linux. Trên mac, các màu vượt qua 256 dường như đã được sửa đổi thay vì được làm phẳng thành một trong 8 màu ANSI đã chọn, các màu trong Linux dường như đang thực hiện một mô đun bao quanh và chọn một màu.
Eric Leschinski

6

Từ người tạo: http://ethanschoonover.com/solarized/vim-colors-solarized

LƯU Ý QUAN TRỌNG ĐỐI VỚI NGƯỜI SỬ DỤNG CUỐI CÙNG:

Nếu bạn định sử dụng Phân cực ở chế độ Đầu cuối (tức là không phải trong phiên bản GUI như gvim hoặc macvim), vui lòng xem xét cài đặt colorcheme của trình mô phỏng đầu cuối của bạn để sử dụng bảng Phân cực. Tôi đã bao gồm các bảng màu cho một số trình giả lập đầu cuối phổ biến cũng như Xdefaults trong bản tải xuống Solarized chính thức có sẵn từ trang chủ Solarized. Nếu bạn sử dụng Solarized mà không có những màu này, Solarized sẽ cần được yêu cầu để giảm màu sắc của nó thành một bộ tương thích với bảng màu 256 đầu cuối hạn chế (trong khi bằng cách sử dụng 16 giá trị màu ansi của thiết bị đầu cuối, bạn có thể đặt các giá trị chính xác, cụ thể cho Solarized bảng màu).

Nếu bạn sử dụng các màu đầu cuối tùy chỉnh, solarized.vim sẽ phù hợp với bạn. Nếu bạn đang sử dụng trình giả lập đầu cuối hỗ trợ 256 màu và không muốn sử dụng màu đầu cuối Phân cực tùy chỉnh, bạn sẽ cần sử dụng 256 màu đã bị suy giảm. Để làm như vậy, chỉ cần thêm dòng sau vào trước dòng phân cực colourchem:

let g:solarized_termcolors=256

Một lần nữa, tôi khuyên bạn chỉ nên thay đổi màu đầu cuối của bạn thành giá trị Phân cực theo cách thủ công hoặc thông qua một trong nhiều sơ đồ đầu cuối có sẵn để nhập.


Đây là cách duy nhất tôi có thể giúp iTerm2 sử dụng các màu phân cực trong MacVim không phải GUI.
Aaron Tribou

4

Câu trả lời của Bill Turner hoạt động, nhưng có một cách để màu sắc khớp chính xác với MacVim. Phân cực có hỗ trợ đặc biệt cho iTerm2, trong số các trình giả lập đầu cuối khác.

  1. Tới trang github iterm2-màu-solarized
  2. Làm theo hướng dẫn trong "Cài đặt"
  3. Đảm bảo rằng .vimrc của bạn có dòng colorscheme solarized

Điều này sẽ đặt màu vim trong iTerm2 chính xác như trong trình chỉnh sửa gui.


Như câu trả lời cũng gợi ý, câu trả lời của Bill Turner cũng đúng nhưng ĐÂY là cách chính thức (do đó chính xác) để đặt solarizedchủ đề.
Có thể

1

Một cách đơn giản để giải quyết vấn đề này là:

Trong các màu dir trên vim-color-solarized tồn tại một arquive có tên là 'solarozed.vim'

Mở tệp này và tìm kiếm:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

thay thế thành:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

Đối với bất kỳ vấn đề nào vẫn gặp phải như tôi, tôi đã cài đặt cấu hình màu phân cực iterm2 . Việc cài đặt vim-color-solarized vào các gói vim và làm theo hướng dẫn là không cần thiết và không tương thích. Có những vấn đề nổi bật buồn cười như trong ảnh chụp màn hình ở trên.

Bài học rút ra: đừng làm cả hai.


0

Tôi đã thử tất cả các đề xuất trước đó. Tôi vừa thêm set t_Co=256vào .vimrc và nó đã được sửa. Tôi không cần tạo tmuxbí danh hoặc thay đổi tệp cấu hình của mình.


0

Không có câu trả lời nào trước đây phù hợp với tôi. Rõ ràng tôi đã thiếu:

set termguicolors
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.