Liệt kê các bảng màu hợp lệ?


16

Tôi chỉ tìm hiểu về :colorschemelệnh. Có cách nào để tôi có thể nhận được danh sách các bảng màu hợp lệ từ Vim không? Tôi muốn có thể làm điều này từ trong Vim, không phải từ một danh sách ở đâu đó trên Internet.

Câu trả lời:


17

Cách dễ nhất là sử dụng :help c_Ctrl-dsau :colorscheme.

Vì vậy, :colorschemeCtrl-dsẽ xuất ra các màu sắc bạn có sẵn cho bạn.


làm việc trên windows quá!
đẳng cấu

10

Một cách khác để hiển thị danh sách là bởi set wildmenu. Với điều này, sau :colorscheme+ space+ tab, một danh sách hoàn thành được hiển thị và cũng có thể chọn bằng phím mũi tên hoặc Ctrl-NCtrl-P. Điều này không chỉ hoạt động trên colorscheme, mà còn trên các hoàn thành cmdline khác. Hành vi bị ảnh hưởng bởi wildmodevà tốt hơn là đặt thành giá trị mặc định full.


3

Nếu bạn muốn làm điều này trong Vimscript, bạn có thể nhận được Danh sách các bảng màu bằng cách sử dụng hàm getcompletion ():

let c = getcompletion('', 'color')
echo c

Điều này đơn giản hơn một chút so với câu trả lời Vimscript hiện có, quét hệ thống tập tin.

Xem :help getcompletion()để biết thêm chi tiết.


2

Các câu trả lời khác cho thấy cách tương tác hiển thị màu sắc nào có sẵn, nhưng không ai đề cập đến cách nhận danh sách có thể được sử dụng trong vimscript. Đây là một bản phóng tác của câu trả lời của tôi cho câu hỏi này .

Giải pháp này sử dụng 'runtimepath'tùy chọn để lấy tất cả các thư mục colorcheme có sẵn, sau đó tìm nạp danh sách các tệp vimscript trong các thư mục đó với các phần mở rộng của chúng bị xóa. Đây có thể không phải là cách an toàn nhất để làm điều đó, vì vậy những cải tiến được hoan nghênh:

function! GetColorschemes()
    " Get a list of all the runtime directories by taking the value of that
    " option and splitting it using a comma as the separator.
    let rtps = split(&runtimepath, ",")
    " This will be the list of colorschemes that the function returns
    let colorschemes = []

    " Loop through each individual item in the list of runtime paths
    for rtp in rtps
        let colors_dir = rtp . "/colors"
        " Check to see if there is a colorscheme directory in this runtimepath.
        if (isdirectory(colors_dir))
            " Loop through each vimscript file in the colorscheme directory
            for color_scheme in split(glob(colors_dir . "/*.vim"), "\n")
                " Add this file to the colorscheme list with its everything
                " except its name removed.
                call add(colorschemes, fnamemodify(color_scheme, ":t:r"))
            endfor
        endif
    endfor

    " This removes any duplicates and returns the resulting list.
    return uniq(sort(colorschemes))
endfunction

Sau đó, bạn có thể sử dụng danh sách này được trả về bởi hàm này trong vimscript. Chẳng hạn, bạn chỉ có thể lặp lại từng màu sắc:

for c in GetColorschemes() | echo c | endfor

Tôi sẽ không giải thích những gì từng chức năng hoặc lệnh riêng lẻ làm ở đây, nhưng đây là danh sách các trang trợ giúp cho tất cả những trang tôi đã sử dụng:

  • :help 'runtimepath'
  • :help :let
  • :help :let-&
  • :help split()
  • :help :for
  • :help expr-.
  • :help :if
  • :help isdirectory()
  • :help glob()
  • :help fnamemodify()
  • :help add()
  • :help uniq()
  • :help sort()

-1

Bạn có thể thử cái này

:colorscheme, Sau đó nhấn spacephím và sau đó là tabphím.


3
Lưu ý rằng điều đó phụ thuộc vào cài đặt của bạn wildmenuwildcharcâu trả lời này về cơ bản giống như câu trả lời của
tivn
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.