Bash เน้นไวยากรณ์ของ subshells


13

เมื่อพิจารณาถึงคำถามจำนวนมากที่เกี่ยวข้องกับ subshells ใน Bash ("ทำไมตัวแปรของฉันไม่เพิ่มในpiped while readloopนี้") ฉันแค่คิดว่ามันดีมากที่จะอ้างถึงตัวแก้ไขหรือบริการที่โค้ด ซึ่งจะถูกดำเนินการใน subshells ถูกจัดรูปแบบแตกต่างจากรหัสดำเนินการในเปลือกแม่ มันอาจจะมีประโยชน์ในฐานะอุปกรณ์การศึกษา (ดูความแตกต่างระหว่างcode | codeและcode < <(code)ทันที) สิ่งนี้มีอยู่ไหม?

คะแนนโบนัสหากใครใช้สำหรับ jEdit หรือ VIm

เห็นได้ชัดว่าไม่จำเป็นต้องสมบูรณ์แบบ (ไม่มีการเน้นไวยากรณ์ในประสบการณ์ของฉัน) แต่ฉันสงสัยว่าสิ่งต่าง ๆ เช่นนี้(foo=bar; echo $foo;)และcommand | while read ...ไม่ควรยากเกินไปสำหรับการเริ่มต้น


ฉันแน่ใจว่าคุณสามารถเพิ่มลงในการvimเน้นรหัสได้
เควิน

2
@Kevin: คำถามนี้ค่อนข้างจะมีอยู่แล้วในทุกรูปแบบ แน่นอนว่าสามารถเพิ่มลงในเครื่องมือแก้ไขที่สนับสนุนระบบไฮไลต์ทัวริงที่สมบูรณ์ได้
l0b0

1
ในกรณีของ piped ในขณะที่วนรอบ POSIX ไม่ได้ระบุว่าส่วนใดของไพพ์ที่ดำเนินการในพาเรนต์ดังนั้นเพื่อเป็นเครื่องมือในการสอนการเน้นสิ่งนี้ถ้ามีอยู่จะสอนให้ผู้คนเขียนสคริปต์เชลล์ที่ไม่สามารถพกพาได้ :(
James Youngman

@JamesYoungman: อีกเหตุผลที่ทำให้ Bash เฉพาะ :)
l0b0

คำตอบ:


2

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

แต่ฉันยินดีที่จะเห็นว่าฉันผิดและมีคนใช้ความพยายามที่จำเป็นในการสร้างการกำหนดค่าดังกล่าว


0

Vim ของฉันทำสิ่งนี้แล้ว

ที่จริงแล้วมันทำให้ฉันรำคาญใจเพราะมันทำให้ความคิดเห็นภายใน subshells ไม่ได้รับการเน้นที่เหมาะสม

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

นี่คือ Vim 7.3 patch 874 รวบรวมจากแหล่งที่มา


บางครั้งฉันตั้งประเภทไฟล์เป็นzshเมื่อฉันทำงานภายใน subshell ที่แก้ไขไวยากรณ์เน้น

OMG นั้นสมบูรณ์แบบ ขอบคุณ !! ฉันต้องมีบล็อกขนาดใหญ่นี้ทั้งหมด (พร้อมความคิดเห็นมากมาย) ภายใน subshell เพื่อที่ฉันจะได้ทำset -x; set -eในส่วนนั้น และเพื่อจับเอาท์พุททั้งหมดนั้นรวมถึง stderr ไปยังบันทึก
Steven Lu

1
ฉันไม่เห็นการจัดรูปแบบใด ๆใน subshell ซึ่งดูไม่ค่อยมีประโยชน์เท่าไหร่ หรือมันหายไปจากภาพหน้าจอ?
l0b0

ชุดตัวแปรและtrapคำหลักจะถูกเน้นมี มันเพิ่งล้มเหลวในการเน้นความคิดเห็น ประเภทไฟล์ zsh ใช้งานได้ ทีนี้, ถึงความแตกต่างของเชลล์ย่อยจากเชลล์หลัก, (ซึ่งหลังจากนั้นคือสิ่งที่คุณต้องการให้ฉันเดา), ดี ....... ใช้ความคิดเห็นบางอย่าง?
Steven Lu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.