vim: บังคับใช้ไวยากรณ์เฉพาะผ่านอาร์กิวเมนต์บรรทัดคำสั่ง


17

เมื่อฉันต้องการอ่านสกีมา PostgreSQL ของฉันง่าย ๆ ฉันจะดัมพ์stderrและเปลี่ยนเส้นทางไปที่vim:

pg_dump -h localhost -U postgres dog_food --schema-only | vim -

สิ่งนี้ให้:

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

vim ไม่มีสคีมาที่เน้นไวยากรณ์เนื่องจากไม่มีส่วนขยายชื่อไฟล์เมื่ออ่านจาก stdin ดังนั้นฉันจึงใช้สิ่งต่อไปนี้:

:set syntax=sql

ซึ่งจะช่วยให้:

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

ในฐานะนักพัฒนาที่ขี้เกียจฉันอยากจะบังคับvimใช้ไวยากรณ์ SQL โดยผ่านอาร์กิวเมนต์บรรทัดคำสั่งช่วยให้ฉันเป็นนักร้องประสานเสียงของการพิมพ์ซ้ำset syntax=<whatever>ทุกครั้งที่ฉันเปิดมันด้วยstdinข้อมูล ..

มีวิธีการตั้งค่าvimไวยากรณ์โดยผ่านอาร์กิวเมนต์บรรทัดคำสั่งหรือไม่

คำตอบ:


23

คุณสามารถใช้ได้:

vim -c 'set syntax=sql' -

2
หมายเหตุ: ใช้งานได้สำหรับฉันแม้ไม่มีเครื่องหมายโคลอนในคำสั่ง
เมอร์ฟี

1
ตัวแปรที่สั้นกว่า:vim '+set syn=sql' -
Stéphane Chazelas

5
โดยปกติแล้วคุณจะใช้งานได้ดีกว่าset filetype=sql(หรือft=sqlสั้น) ที่ยังจะโหลดไฟล์ที่เยื้องและดังกล่าวและไม่ได้เป็นเพียงการเน้นไวยากรณ์ ...
มาร์ติน Tournoij

2
vim -R -c 'set ft=sql' -
  • -Rเปิดเป็นกลุ่มในโหมดอ่านอย่างเดียว ระบบของคุณอาจมีนามแฝงviewสำหรับvim -Rแต่Neovim ไม่สนับสนุน
  • set ftset filetypeสั้นสำหรับ ดังที่Martin Tournoij ได้กล่าวถึงในความคิดเห็นของเขาการตั้งค่าประเภทไฟล์จะกำหนดไวยากรณ์และอื่น ๆ อีกมากมาย

1

คุณสามารถทำให้เป็นแบบอัตโนมัติได้โดยใส่คำสั่งลงใน~/.vimrc:

augroup filetype
  au! StdinReadPre * set filetype=sql
augroup END
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.