แสดงรายการชุดสีที่ถูกต้อง?


15

ฉันเพิ่งค้นพบเกี่ยวกับ:colorschemeคำสั่ง มีวิธีที่ฉันสามารถรับรายการชุดรูปแบบสีที่ถูกต้องจาก Vim หรือไม่? ฉันต้องการที่จะสามารถทำเช่นนี้จากภายในเป็นกลุ่มไม่ใช่จากรายการบางแห่งบนอินเทอร์เน็ต

คำตอบ:


17

วิธีที่ง่ายที่สุดคือการใช้งานหลังจากที่:help c_Ctrl-d:colorscheme

ดังนั้น:colorschemeCtrl-dจะเอาท์พุทชุดสีที่คุณมีให้คุณ


ทำงานบน windows เช่นกัน!
isomorphismes

10

set wildmenuวิธีที่จะแสดงรายการก็คือโดย ด้วยวิธีนี้หลังจากที่:colorscheme+ space+ tabรายการเสร็จจะปรากฏขึ้นและยังสามารถเลือกได้ด้วยปุ่มลูกศรหรือและCtrl-N Ctrl-Pสิ่งนี้ไม่เพียงทำงานบน colorscheme แต่ยังรวมถึง cmdline ที่สมบูรณ์ด้วย ลักษณะการทำงานได้รับผลกระทบจากwildmodeและตั้งค่าเป็นค่าเริ่มต้นfullดีขึ้น


3

หากคุณต้องการทำสิ่งนี้ใน Vimscript คุณสามารถรับรายการชุดสีโดยใช้ฟังก์ชัน getcompletion ():

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

นี่เป็นวิธีที่ค่อนข้างง่ายกว่าคำตอบ Vimscript ที่มีอยู่ซึ่งสแกนระบบไฟล์

ดู:help getcompletion()รายละเอียดเพิ่มเติมได้ที่


2

คำตอบอื่น ๆ แสดงวิธีการโต้ตอบของการแสดงชุดสีที่มีให้ แต่ไม่มีใครพูดถึงวิธีการรับรายการที่สามารถใช้ใน vimscript นี่คือการปรับคำตอบของฉันสำหรับคำถามนี้

วิธีการแก้ปัญหานี้ใช้'runtimepath'ตัวเลือกในการรับไดเรกทอรี colorcheme ที่มีอยู่ทั้งหมดแล้วดึงรายชื่อไฟล์ vimscript ในไดเรกทอรีเหล่านั้นโดยลบส่วนขยายออก นี่อาจไม่ใช่วิธีที่ปลอดภัยที่สุดในการดำเนินการดังนั้นเรายินดีต้อนรับการปรับปรุง:

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

จากนั้นคุณสามารถใช้รายการที่ส่งคืนโดยฟังก์ชันนี้ใน vimscript ตัวอย่างเช่นคุณสามารถสะท้อนแต่ละ colorcheme:

for c in GetColorschemes() | echo c | endfor

ฉันจะไม่อธิบายว่าแต่ละฟังก์ชันหรือคำสั่งทำอะไรที่นี่ แต่นี่คือรายการของหน้าช่วยเหลือสำหรับทุกหน้าที่ฉันใช้:

  • :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

คุณสามารถลองสิ่งนี้

:colorschemeจากนั้นกดspaceปุ่มและจากนั้นtabคีย์


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