วิธีปิดการใช้งาน autocmd หรือ augroup ในกลุ่ม?


25

ให้ฉันมีกลุ่มคำสั่งเช่น:

augroup MyGroup
  autocmd CursorMoved * silent call MyCommandOne()
augroup END

ฉันต้องการปิดใช้งาน AutoCommands ทั้งหมดใน MyGroup เป็นระยะเวลาหนึ่งแล้วเปิดใช้งานอีกครั้งในภายหลัง

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

เมื่อดูความช่วยเหลือฉันเห็นเพียงไม่กี่ตัวเลือก:

  • augroup!จะลบทั้งกลุ่ม: ฉันไม่คิดว่ามันจะถูกต้องเพราะฉันจะต้องการเปิดใช้งานอีกครั้ง (แต่อาจมีวิธีการกำหนดกลุ่มอีกครั้งได้อย่างง่ายดายอีกครั้ง?)
  • :noautocmdจะปิดใช้งานการเรียกกลับสำหรับการเรียกใช้คำสั่งครั้งเดียวเท่านั้น (และปิดการใช้งานautocmds ทั้งหมดไม่ได้ระบุไว้)
  • eventignore เน้นการเชื่อมโยงเหตุการณ์ไม่ใช่คำสั่ง: ดูเหมือนว่าจะปิดใช้งานคำสั่งที่ถูกผูกไว้ทั้งหมดสำหรับเหตุการณ์ที่กำหนดไม่ใช่เพียงคำสั่งเดียวหรือกลุ่มที่ฉันสามารถระบุได้

สิ่งนี้ทำได้อย่างไร

คำตอบ:


20

จาก:help autocmd:

If you want to skip autocommands for one command, use the :noautocmd command
modifier or the 'eventignore' option.

จาก:help :noautocmd:

To disable autocommands for just one command use the ":noautocmd" command
modifier.  This will set 'eventignore' to "all" for the duration of the
following command.  Example:

    :noautocmd w fname.gz

This will write the file without triggering the autocommands defined by the
gzip plugin.

ดังนั้นจึง:noautocmdเป็นสิ่งที่คุณกำลังมองหา

ในบริบทอะไรที่คุณต้องการจะปิดการใช้งานaugroup?


ขอบคุณสำหรับคำตอบของคุณ แต่ฉันอ่านมันในเอกสารแล้ว ฉันชี้แจงคำถามของฉันไปที่ (หวังว่า) จะแสดงสิ่งที่ฉันกำลังมองหา
Andrew Vit


1

สำหรับใครที่ไม่ได้มีความต้องการโปสเตอร์เดิมของความสามารถในการเรียกคืนaugroup, :autocmd! <augroup name>เป็นคำสั่งที่จะเพียงแค่ลบทั้งหมดautocmdในaugroupเช่น:

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