หมายเหตุ: โครงการนี้ถูกเก็บถาวรและถูกแทนที่ด้วยการเน้นแบบ LSP ซึ่งยุ่งยากน้อยกว่าและใช้ทรัพยากรน้อยกว่า ไม่ต้องสงสัยเลยว่า color_coded เป็นผู้บุกเบิกพื้นที่นี้ และฉันรู้สึกขอบคุณสำหรับโทเค็นทั้งหมดที่ได้รับการลงสีในบรรณาธิการของเรานับตั้งแต่นั้นเป็นต้นมา
color_coded เป็นปลั๊กอิน vim ที่ให้การเน้นโค้ดแบบเรียลไทม์ (เร็ว) แบบไม่มีแท็กสำหรับ C++, C และ Objective C โดยใช้ libclang
ก่อน color_coded | หลังจาก color_coded แล้ว |
---|---|
ก่อนที่จะติดตั้ง color_coded บน OS X โปรดอ่านข้อมูลต่อไปนี้ กลุ่มที่มาพร้อมกับ OS X (แม้แต่ล่าสุด) นั้นไม่ใหม่พอที่จะรองรับ color_coded นอกจากนี้ macvim เริ่มต้นจาก homebrew ไม่ได้เปิดใช้งาน lua เพื่อให้แน่ใจว่าคุณมีการติดตั้ง macvim ที่ถูกต้องบน OS X โปรดดำเนินการดังต่อไปนี้:
brew update
brew install macvim --with-lua --with-override-system-vim
brew linkapps macvim
brew install xz cmake
# Spawn a new shell to use the new system vim
เพื่อให้ได้รับการไฮไลต์อย่างเหมาะสม คุณจะต้องการเครื่องมือบรรทัดคำสั่ง Xcode ซึ่งจะให้ส่วนหัวของระบบที่เหมาะสมแก่คุณ:
xcode-select --install
ขั้นแรก ติดตั้งการขึ้นต่อกันที่จำเป็นทั้งหมด
[sudo] apt-get install build-essential libclang-3.9-dev libncurses-dev libz-dev cmake xz-utils libpthread-workqueue-dev libtinfo-5
สำหรับ lua คุณต้องติดตั้งเวอร์ชันที่ vim เวอร์ชันของคุณคอมไพล์ไว้
vim --version | grep lua
ค้นหาหมายเลขเวอร์ชันของคุณ -llua5.x
และใช้เพื่อติดตั้งเวอร์ชันที่ถูกต้อง
[sudo] apt-get install liblua5.x-dev lua5.x
คุณต้องแน่ใจว่าคุณมี GCC 4.9 (หรือสูงกว่า) หากคุณไม่ทำ คุณสามารถลองทำสิ่งต่อไปนี้ (ทดสอบบน Ubuntu 14.04)
# Install GCC 4.9
[sudo] add-apt-repository ppa:ubuntu-toolchain-r/test
[sudo] apt-get update
[sudo] apt-get install g++-4.9
# Prefer 4.9 to other versions
[sudo] update-alternatives --remove-all g++
[sudo] update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 50
(ทดสอบใน FreeBSD 11.1)
$ [sudo] pkg install llvm40 cmake
$ cd ~ /.vim/bundle/color_coded
$ mkdir build && cd build
$ cmake -DCUSTOM_CLANG=1 -DLLVM_ROOT_DIR=/usr/local/llvm40 ..
$ make && make install
การติดตั้งได้รับการทดสอบโดยใช้ vundle แต่ควรเข้ากันได้กับเชื้อโรคด้วย หากต้องการติดตั้งโดยใช้ vundle (เพิ่มบรรทัดใน ~/.vimrc
ของคุณ รีสตาร์ท vim รัน :PluginInstall
):
Plugin ' jeaye/color_coded '
การติดตั้งด้วย NeoBundle รองรับการสร้างและการโหลดปลั๊กอินแบบ Lazy Loading โดยอัตโนมัติ:
NeoBundleLazy ' jeaye/color_coded ' , {
' build ' : {
' unix ' : ' rm -f CMakeCache.txt && cmake . && make && make install ' ,
},
' autoload ' : { ' filetypes ' : [ ' c ' , ' cpp ' , ' objc ' , ' objcpp ' ] },
' build_commands ' : [ ' cmake ' , ' make ' ]
}
เนื่องจาก color_coded มีส่วนประกอบที่คอมไพล์แล้ว คุณจะต้องคอมไพล์ด้วยตนเองเมื่อทำการติดตั้งและอัปเดต (เว้นแต่ว่าตัวจัดการแพ็คเกจ vim ของคุณจะทำเพื่อคุณ) การคอมไพล์ทำงานดังต่อไปนี้ โดยสมมติว่ามีการใช้งาน vundle (ดูส่วนการขึ้นต่อกันเพื่อให้แน่ใจว่าคุณสามารถ make
ได้อย่างเหมาะสม):
cd ~ /.vim/bundle/color_coded
rm -f CMakeCache.txt
mkdir build && cd build
cmake ..
make && make install # Compiling with GCC is preferred, ironically
# Clang works on OS X, but has mixed success on Linux and the BSDs
# Cleanup afterward; frees several hundred megabytes
make clean && make clean_clang
ด้วยเหตุผลด้านความเข้ากันได้ต่างๆ color_coded จะพยายามดาวน์โหลด clang เวอร์ชันที่รู้จัก ซึ่งอาจเพิ่มเวลาให้กับกระบวนการกำหนดค่าของคุณ แต่ให้ความเสถียรมากกว่าในหลายแพลตฟอร์ม การหลีกเลี่ยงสิ่งนี้ไม่ได้รับการสนับสนุนอย่างเป็นทางการ แต่มีบันทึกไว้ที่นี่
หมายเหตุอื่น: color_coded ไม่รองรับ luajit ที่เชื่อถือได้ ข้อมูลเพิ่มเติม luajit ไม่รองรับการฝังในไลบรารีที่แชร์อย่างน่าเชื่อถือ
เมื่อติดตั้งและคอมไพล์ color_coded แล้ว มันจะเริ่มทำงานโดยอัตโนมัติในครั้งถัดไปที่คุณเริ่ม vim เพื่อให้ color_coded ทราบว่าต้องคอมไพล์โค้ดอย่างไร คุณ อาจ ต้องสร้างไฟล์ที่อธิบายตัวเลือกคอมไพเลอร์ที่จำเป็น หมายเหตุ color_coded จะถือว่าค่าเริ่มต้นมีสติและพยายามอนุญาตให้ใช้งานได้ทันที
อย่างไรก็ตาม ในกรณีที่ไม่สำคัญ คุณจะต้องจัดหาไฟล์ .color_coded
สำหรับโปรเจ็กต์ของคุณ สำหรับแต่ละไฟล์ color_coded จะค้นหาจากไดเรกทอรีของไฟล์ไปจนถึงรากของระบบไฟล์เพื่อค้นหาไฟล์ .color_coded
หรือไฟล์ .color_coded_foo
(โดยที่ foo
คือประเภทไฟล์ เช่น c
, cpp
ฯลฯ) ซึ่งจะทำให้คุณสามารถมีหนึ่งรายการในโฮมไดเร็กตอรี่ของคุณ จากนั้นในแต่ละไดเร็กทอรีของโปรเจ็กต์ของคุณ หากคุณไม่ได้ระบุไว้ในไดเร็กทอรีโปรเจ็กต์ ระบบจะใช้ไดเร็กทอรีในโฮมไดเร็กทอรีของคุณ นอกจากนี้ยังทำให้สามารถจัดเตรียมแฟล็กที่แตกต่างกันสำหรับไฟล์ประเภทต่างๆ (C, C++ ฯลฯ) และยังทำงานในโปรเจ็กต์ย่อยที่มีแฟล็กต่างกันได้อีกด้วย ขอย้ำอีกครั้ง หากไม่พบไฟล์ดังกล่าว ระบบจะใช้ค่าเริ่มต้นที่เหมาะสม
color_coded จะพยายามอย่างเต็มที่ในการเน้นโค้ดของคุณ แม้ว่าจะมีข้อผิดพลาดในหน่วยการแปลก็ตาม ช่วยให้สามารถเน้นได้ดีขึ้นในขณะที่พิมพ์และเน้นโค้ดที่ถูกต้องเมื่อ color_coded ไม่ทราบทุกอย่างเกี่ยวกับโครงการของคุณ
เนื้อหาของไฟล์ .color_coded
หรือ .color_coded_foo
เป็นเพียงรายการตัวเลือกคอมไพเลอร์ที่แยกบรรทัด ตัวอย่างเช่น ไฟล์ .color_coded
สำหรับ color_coded คือ (color_coded จะใส่ส่วนที่เหลือตามค่าเริ่มต้นเมื่อตรวจพบไฟล์ C หรือ C++):
-Iinclude
-Ilib/jest/include
ไฟล์ .color_coded
สามารถสร้างได้โดยอัตโนมัติโดยใช้ YCM-Generator
หมายเหตุ: เพื่อความเรียบง่าย ไม่อนุญาตให้ใช้ข้อมูลอื่นในไฟล์ .color_coded
กล่าวคือ ไม่สนับสนุนความคิดเห็น
g:color_coded_enabled
ตัวเลือกนี้จะควบคุมว่า color_coded จะทำงานหรือไม่ การเรียกใช้คำสั่ง :CCtoggle
จะแก้ไขตัวเลือกนี้เพื่อให้ได้ผลลัพธ์ คุณยังสามารถระบุเป็น 0
ใน ~/.vimrc
ของคุณเพื่อปิดการใช้งาน color_coded ทั่วโลก
ค่าเริ่มต้น:
let g: color_coded_enabled = 1
g:color_coded_filetypes
ตัวเลือกนี้ควบคุมประเภทไฟล์ที่ color_coded จะพยายามรวบรวม
ค่าเริ่มต้น:
let g: color_coded_filetypes = [ ' c ' , ' cpp ' , ' objc ' ]
มีกลุ่มไฮไลต์ใหม่ๆ มากมายที่เพิ่ม color_coded ได้รับการออกแบบมาเพื่อติดตามภายในของ libclang อย่างใกล้ชิดที่สุด เพื่อเชื่อมโยงสิ่งต่าง ๆ เข้าด้วยกัน กลุ่ม wrapper บางกลุ่มได้ถูกสร้างขึ้นซึ่งจะอนุญาตให้มีการเปลี่ยนแปลงแบบกว้าง ๆ มากขึ้น ตามค่าเริ่มต้น กลุ่มเสียงดังกราวจะถูกแมปเพื่อใช้สิ่งเหล่านี้ ร่วมกับกลุ่มปกติของ vim ( Function
, Macro
, Number
, ฯลฯ)
" To get full highlighting, specify these in your colorscheme.
" See colors/twilighted.vim for example usage
hi Member " Any non-static member variable
hi Variable " Any non-member variable
hi Namespace
hi EnumConstant
hi link StructDecl Type
hi link UnionDecl Type
hi link ClassDecl Type
hi link EnumDecl Type
color_coded จัดส่งพร้อมโทนสีตัวอย่างที่สาธิตการสนับสนุนสำหรับกลุ่มขยาย หากต้องการใช้งาน ให้เรียกใช้ :colorscheme twilighted
ตามชื่อที่แนะนำ โทนสีนั้นแยกมาจากธีมพลบค่ำของ vim และได้รับการปรับให้เข้ากับสิ่งที่คุณจะได้เห็นใน repo อย่างเหมาะสม หากต้องการตรวจสอบการใช้งาน โปรดไปที่ colors/twilighted.vim
โปรดทราบว่า color_coded สามารถทำงานร่วมกับโทนสีใดก็ได้ นี่เป็นเพียงตัวอย่าง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกลุ่มที่รองรับทั้งหมด โปรดดูที่ after/syntax/color_coded.vim
และเอกสารประกอบเกี่ยวกับเสียงดังกราว
:CCerror
คำสั่งนี้ส่งออกข้อความแสดงข้อผิดพลาดการคอมไพล์ครั้งล่าสุดจาก libclang หากการไฮไลต์ของคุณทำงานไม่ถูกต้อง คุณอาจมีไฟล์ .color_coded
ที่กำหนดค่าไม่ถูกต้อง หรืออาจมีข้อผิดพลาดทางไวยากรณ์ในแหล่งที่มาของคุณ หากมีข้อสงสัย โปรดตรวจสอบที่นี่ก่อน
:CCtoggle
คำสั่งนี้เปิดใช้งาน color_coded หากปิดใช้งานอยู่ในปัจจุบัน หรือปิดใช้งาน หากเปิดใช้งานอยู่ในปัจจุบัน การเปิด/ปิดใช้งานนี้ทำได้ผ่านตัวเลือก g:color_coded_enabled
การรวบรวม color_coded ต้องใช้:
การใช้ color_coded ต้องใช้เป็นกลุ่ม:
color_coded พยายามรวบรวมโค้ดของคุณขณะที่คุณพิมพ์ เนื่องจากวิธีการทำงานของ vim color_coded จึงสามารถอัปเดตการไฮไลต์ได้เมื่อคุณทำอะไรบางอย่างเท่านั้น (เลื่อนเคอร์เซอร์ ทำการเปลี่ยนแปลง ฯลฯ) เมื่อคุณพิมพ์เสร็จแล้วและการไฮไลท์ยังอัปเดตไม่เสร็จ สมมติว่าไฟล์ .color_coded
ของคุณเพียงพอแล้ว การเลื่อนเคอร์เซอร์ (หรือทำให้เกิดเหตุการณ์ด้วยวิธีอื่น) จะทำให้ color_coded เสร็จสิ้น
โปรดทราบว่ามีเหตุการณ์การระงับเป็นกลุ่มซึ่งจะทริกเกอร์ หลังจากที่ คุณหยุดพิมพ์และ หลังจากเกิด ความล่าช้าไปบ้าง color_coded ยังเกี่ยวโยงกับสิ่งนี้และจะใช้เพื่อใช้การไฮไลต์หากเป็นไปได้
ใช่. เชื่อหรือไม่ว่าสิ่งเหล่านี้เกือบจะเป็นข้อบกพร่องของ libclang อย่างแน่นอน ฉันได้แยกแยะบางรายการแล้วและฉันก็เก็บ libclang ทางแยกของตัวเองไว้ หากคุณต้องการรายงานปัญหาดังกล่าว โปรดดูตั๋วนี้
นี่เป็นการจงใจ ครั้งแรกที่คุณเปิดบัฟเฟอร์ color_coded จะไม่รู้ว่าจะมีการคอมไพล์อย่างถูกต้องหรือไม่ และไม่ต้องการให้คุณรอในขณะที่พยายามคิดออก color_coded จะคอมไพล์ในพื้นหลังเสมอ และเหตุการณ์เช่นการเลื่อนเคอร์เซอร์หรือการเปลี่ยนข้อความจะสำรวจการอัปเดต อย่างไรก็ตาม โปรดทราบ ว่าเมื่อบัฟเฟอร์มีการไฮไลต์แล้ว การออกจากบัฟเฟอร์นั้นและกลับมาที่บัฟเฟอร์นั้นจะใช้การไฮไลต์ก่อนหน้าพร้อมกัน
เมื่อคุณติดตั้ง color_coded คุณจะต้องคอมไพล์ด้วยตนเองก่อนจึงจะสามารถใช้งานได้สำเร็จ ดูการติดตั้งสำหรับคำแนะนำ
สมมติว่าคุณได้อัปเดตการติดตั้ง color_coded ที่ใช้งานได้ คุณจะได้รับข้อผิดพลาดนี้หากการอัปเดตกำหนดให้คุณต้องคอมไพล์ color_coded ใหม่ (เช่น มีการเปลี่ยนแปลงใน Native API) หากต้องการคอมไพล์ใหม่ ให้ทำตามขั้นตอนเดียวกับที่คุณทำในการคอมไพล์ตั้งแต่แรก
อย่างน้อยตอนนี้ color_coded ไม่รองรับ neovim อย่างไรก็ตาม มี chromatica.vim ซึ่งมีจุดมุ่งหมายเพื่อให้การไฮไลต์ที่คล้ายกัน โดยเฉพาะสำหรับ neovim
สิ่งนี้เกิดขึ้นในระบบปฏิบัติการบางระบบซึ่งจำเป็นต้องมีเส้นทางรวมเพิ่มเติม วิธีแก้ไขคือตรวจสอบให้แน่ใจว่าเส้นทางเหล่านี้อยู่ในไฟล์ .color_coded
ของคุณ ซึ่งขึ้นต้นด้วย -isystem
หากต้องการค้นหาเส้นทางเหล่านั้น ให้ดำเนินการดังต่อไปนี้:
echo | clang -v -E -x c++ -
ดูความคิดเห็นของปัญหานี้เพื่อดูรายละเอียด color_coded พยายามช่วยโดยสมมติว่าสิ่งเหล่านี้บางอย่าง ดังที่แสดงใน post_constants()
ที่นี่
คุณน่าจะใช้ luajit ซึ่งฝังได้ไม่ดีในไลบรารีที่แชร์ หากคุณไม่แน่ใจ ให้ดูว่ามีอะไรเกิดขึ้นหรือไม่:
vim --version | grep jit
ข้อมูลเพิ่มเติมอยู่ที่นี่
คุณสามารถใช้สิ่งนี้ใน .vimrc
:
" Disable color_coded in diff mode
if & diff
let g: color_coded_enabled = 0
endif
คุณสามารถระบุ DOWNLOAD_CLANG=0
ให้กับ cmake
คุณอาจต้องระบุเส้นทางไปยังไบนารี llvm-config โดยใช้ LLVM_CONFIG=
ทั้งนี้ขึ้นอยู่กับแพลตฟอร์มของคุณ นอกจากนี้ยังช่วยให้คุณใช้ Clang/LLVM เวอร์ชันต่างๆ ได้อีกด้วย
ตัวอย่าง:
cmake . -DDOWNLOAD_CLANG=0
คุณอาจพบสิ่งนี้บนระบบที่ใช้ Debian วิธีแก้ไขคือติดตั้ง liblua-5.x-0-dbg
สิ่งนี้มีสาเหตุมาจากจุดบกพร่องในกลุ่ม คุณสามารถแก้ไขได้โดยใช้กลุ่มที่มีแพทช์ 1691 เป็นอย่างน้อย ดูปัญหานี้สำหรับรายละเอียด
อย่าลังเลที่จะสร้างปัญหาบน Github หรือส่งอีเมลถึงฉันหรือติดตามฉันที่ IRC: Freenode @ #color_coded
color_coded อยู่ภายใต้ใบอนุญาตโอเพ่นซอร์สของ MIT
ดูไฟล์ LICENSE
หรือ http://opensource.org/licenses/MIT