2010-07-30 32 views
15

Tôi đang sử dụng vim và MacVim. Tôi có một 256 màu colorcheme mà tôi thích cho MacVim của tôi, nhưng nếu tôi tải nó vào vim thường xuyên, nó rõ ràng là không hoạt động (tôi nhận được blinkies thay thế). Tôi muốn có thể sử dụng cùng một cấu hình vim trên tất cả các hệ thống của mình, vì vậy:Điều kiện màu sắcchiều kiện trong .vimrc

Có cách nào để kiểm tra kích thước bảng màu trong .vimrc và đặt một trong hai màu phù hợp không? Nếu điều đó không khả thi, thì việc kiểm tra MacVim so với vim cũng sẽ không sao.

Trả lời

23

Bạn có một số tùy chọn.

Tôi nghĩ rằng đặt cược tốt nhất của bạn là tải một colorscheme vào .vimrc và một số khác trong .gvimrc (hoặc trong trường hợp của bạn, chỉ cần không tải một colorcheme trong .vimrc ở tất cả). Màu .gvimrc colorscheme sẽ chỉ được tải khi bạn đang chạy phiên bản GUI của MacVim.

Nếu bạn không muốn chia cấu hình của bạn trên nhiều file, bạn cũng có thể sử dụng một điều kiện như thế này trong .vimrc:

if has('gui_running') 
    colorscheme mycrazycolors 
endif 

Cuối cùng, nếu bạn thực sự muốn biết số lượng màu sắc có sẵn, bạn có thể kiểm tra các thiết lập t_Co:

:echo &t_Co 

t_Co trống trong phiên bản GUI của MacVim, vì vậy bạn sẽ có lẽ vẫn muốn sử dụng một biến thể của kỹ thuật has(). Trong thực tế, mặc định .vimrc làm điều gì đó tương tự để xác định khi nào thì cho phép làm nổi bật cú pháp:

if &t_Co > 2 || has("gui_running") 
    syntax on 
endif 

Vì lợi ích của sự hoàn chỉnh, tôi nên đề cập rằng bạn cũng có thể mở rộng tập tin colorscheme bạn để bao gồm các thiết lập hợp lý cho thiết bị đầu cuối màu. Tuy nhiên, đây là một số lượng công việc hợp lý và có thể dễ dàng chuyển sang ứng dụng đầu cuối hỗ trợ nhiều màu hơn.

Xem các chủ đề này cho biết thêm:

:help has() 
:help termcap 
:help termcap-colors 
+0

Cảm ơn vì những điều này, đặc biệt đối với '.gvimrc' - Tôi không biết điều đó tồn tại. – Amadan

5

thời gian gần đây tôi đã làm một cái gì đó như thế này để sử dụng vimrc nhau trên tất cả các hệ thống Linux của chúng tôi, nhưng sử dụng font monospace Ubuntu nếu tôi được chạy trên Ubuntu:

if (match(system("cat /etc/issue"), "Ubuntu") != -1) 
    set guifont=Ubuntu\ Mono\ 13 
else 
    set guifont=Monospace\ 11 
endif 

dường như với tôi rằng bạn có thể làm một cái gì đó tương tự để phát hiện nếu bạn đang chạy trên một máy Mac hoặc:

if (match(system("uname -s"), "Darwin") != -1) 
    colorscheme macscheme 
else 
    colorscheme otherscheme 
endif 

Lưu ý rằng tôi đã sử dụng http://en.wikipedia.org/wiki/Uname để tìm hiểu các báo cáo không công khai trên OS X. Tôi không có máy Mac ở đây tiện dụng để dùng thử nhưng tôi cho rằng đó là chính xác.

+2

FYI: 'uname -s' in ra 'Darwin' trên mac của tôi. – sdolan