วิธีรับเอาท์พุท Build Color จาก Make ใน Sublime Text 3


19

คุณจะนำสีเข้ามาในหน้าต่างเอาต์พุตการสร้าง ST3 ได้อย่างไร

ฉันใช้ gccfilter เพื่อสร้างงานสร้างของฉันให้มีสี แต่ ST3 จะแสดงลำดับการหลบหลีกแบบดิบ มีวิธีใดบ้างที่จะดำเนินการกับมันได้? หรือเพื่อลบ gccfilter และเพิ่งได้รับ ST3 เพื่อเอาท์พุท colorize (เช่นเพียง grep ในการเตือนและข้อผิดพลาดจะดี)

คำตอบ:


16

เวอร์ชันล่าสุดของระบบสร้าง Makefile ของ ST3 (ดังอธิบายในไฟล์Make.sublime-build ) มีคำจำกัดความของไวยากรณ์ที่สร้างเอาต์พุตที่มีสี

หากคุณไม่พอใจกับสิ่งนี้นี่คือสิ่งที่คุณสามารถทำได้ในฐานะทางเลือกและวิธีการทำงานโดยทั่วไปหากคุณมีระบบการสร้างที่สร้างสี ANSI ในเทอร์มินัลและคุณต้องการให้พวกมันแสดงในแผงผลลัพธ์ของ Sublime Text 3 .

นี่คือวิธีที่ฉันทำในการติดตั้ง Sublime Text 3 สำหรับ RSpec แต่ฉันคิดว่ามันใช้ได้อย่างสมบูรณ์แบบในทุกกรณีด้วยเครื่องมือที่ให้สีในคอนโซล / TTY ปกติ:

1. บังคับให้ระบบสร้างของคุณให้สีออกมาแม้ว่าจะไม่ได้ส่งออกไปยัง TTY

ขึ้นอยู่กับระบบบิลด์ ตัวอย่างเช่นสำหรับ Ruby และ RSpec คุณอาจสร้าง.rspecไฟล์ในโครงการของคุณด้วยเนื้อหาต่อไปนี้:

--color --tty

ในกรณีของคุณคุณมีระบบบิลด์ที่สร้างเอาต์พุตด้วย ANSI color escape sequences

2. ติดตั้งแพคเกจ ANSIescape (SublimeANSI)

ขอแนะนำให้ติดตั้งผ่าน Package Control ดู repo ของแพ็คเกจสำหรับคำแนะนำในการติดตั้งและการกำหนดค่า

3. สร้างคำจำกัดความของระบบบิลด์ใหม่ใน Sublime Text และกำหนดให้รู้จักสี ANSI

ตัวอย่างเช่นนี่คือเนื้อหาของColorized RSpec.sublime-buildระบบสร้างของฉัน:

{
    "cmd": ["rspec", "-I ${file_path}", "$file"],
    "file_regex": "# ([A-Za-z:0-9_./ ]+rb):([0-9]+)",
    "working_dir": "${project_path:${folder:${file_path}}}",
    "selector": "source.ruby.rspec",
    // Recognize ANSI colors in the output
    "target": "ansi_color_build",
    "syntax": "Packages/ANSIescape/ANSI.tmLanguage"
}

สุดท้ายทั้งสองตัวเลือกการกำหนดค่าที่นำมาจากREADME SublimeANSI ของ คุณสามารถใช้สิ่งนี้กับระบบการสร้างของคุณสำหรับการสร้าง คุณสามารถอ้างอิงMake.sublime-buildจากไฟล์เวอร์ชันปัจจุบันจากแพ็คเกจของ Sublime Text 3

4. สร้างไฟล์ / โครงการของคุณโดยใช้ระบบบิลด์ที่สร้างขึ้นใหม่

ใช้เมนู "สร้างด้วย ... " เพื่อเลือกระบบสร้างใหม่ บน OS X Cmd + Shift + Bนี้อยู่ บิวด์ที่ตามมาด้วยCmd + Bจะใช้ระบบบิลด์ที่เลือกล่าสุดนี้

นี่คือลักษณะ:

ป้อนคำอธิบายรูปภาพที่นี่


1
โชคไม่ดีที่ ANSIEscape มีข้อ จำกัด บางประการในการแยกวิเคราะห์รหัสหลบหนี ANSI ดังนั้นเอาต์พุตทั้งหมดจะไม่ได้รับประโยชน์ นี่คือข้อ จำกัด บางประการที่ฉันได้พบ: * การตั้งค่าพื้นหลังหลังจากที่ไม่มีการแทรกแซง * การใช้ตัวเลขสองหลัก (เช่นใน <ESC> [01m) ไม่ได้ถูกวิเคราะห์อย่างถูกต้อง * รหัสบางตัวที่ใช้ในการทำความสะอาดเส้น (โดยเฉพาะ: <ESC> [K] จะไม่ถูกแยกวิเคราะห์ วิธีนี้ทำให้วิธีนี้ไม่เหมาะอย่างยิ่งสำหรับ - ตัวอย่างเช่น - GCC
Emilio Garavaglia

5

ขณะนี้ยังไม่มีวิธีในการสร้างสีในการแยกวิเคราะห์คอนโซลที่ฉันพบ เรื่องนี้จะต้องมีการหารือกับผู้เขียน ฉันสังเกตุก่อนหน้านี้ว่าคอนโซลมีเอาต์พุตแบบโมโนโครมเสมอ ขณะนี้ ST3 ใช้สีที่ให้มาพร้อมกับชุดรูปแบบที่คุณใช้เท่านั้น

วิธีเดียวที่จะกำจัดลำดับ escape นั้นคือการกรองพวกมันออกก่อนที่ผลกระทบจะออก Sublime


1
เฮ้ฉันสามารถกรองพวกมันได้อย่างง่ายดายโดยไม่ต้องใช้ gccfilter .. ฉันแค่ต้องการ COLOR !!
Yeraze

ใช่ฉันหวังว่ามันจะเป็นไปได้ บางทีการผลักไปที่ผู้แต่งจะทำให้เสร็จ
Sly
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.