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


50

ฉันกำลังแก้ไข.vimrcไฟล์ของฉันและฉันก็รวมถึงความคิดเห็นด้วย เมื่อฉันมีความคิดเห็นเช่นนี้:

" example comment

จากนั้นกด Enter ที่ท้ายบรรทัดหลังจากเสร็จความคิดเห็นบรรทัดถัดไปจะถูกตั้งค่าโดยอัตโนมัติเป็นความคิดเห็น (เครื่องหมายคำพูดจะถูกแทรกโดยอัตโนมัติ):

" example comment
" 

ฉันจะหยุดพฤติกรรมนี้ได้อย่างไร

คำตอบ:


66

สิ่งนี้ถูกควบคุมด้วยการformatoptionsตั้งค่า จาก:help fo-table:

คุณสามารถใช้'formatoptions'ตัวเลือกเพื่อกำหนดวิธีจัดรูปแบบข้อความเป็นกลุ่ม 'formatoptions'เป็นสตริงที่สามารถมีตัวอักษรใด ๆ ด้านล่าง tcqค่าเริ่มต้นคือ คุณสามารถแยกตัวเลือกจดหมายด้วยเครื่องหมายจุลภาคเพื่อให้สามารถอ่านได้

โปรดทราบว่าคำสั่งเกี่ยวกับ "ค่าเริ่มต้น" ค่อนข้างทำให้เข้าใจผิดเนื่องจากไฟล์หลายชนิดเปลี่ยนการจัดรูปแบบให้เหมาะกับประเภทไฟล์มากที่สุด ตัวอย่างเช่นใน/usr/share/vim/vim74/ftplugin/vim.vim:

" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
setlocal fo-=t fo+=croql

คุณสามารถดูปัจจุบันformatoptionsด้วย:

:set fo?
  formatoptions=jcroql

และดูว่าพวกเขาถูกตั้งไว้ที่ไหนเช่น:

:verbose set fo?
  formatoptions=jcroql
      Last set from /usr/share/vim/vim74/ftplugin/vim.vim

ในกรณีนี้คุณต้องการลบrแฟล็กแต่อาจรวมถึงcและoแฟล็กด้วย:

r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.

สามารถทำได้ดังนี้:

:set formatoptions-=r formatoptions-=c formatoptions-=o

โปรดทราบว่าการใช้:set formatoptions-=croจะไม่ทำงานตามที่คาดไว้ (เนื่องจากเป็นสตริงมันจะค้นหาสตริงcroตามลำดับซึ่งมักจะไม่ทำงาน)

การเปลี่ยนแปลงการตั้งค่าเฉพาะสำหรับบัฟเฟอร์ปัจจุบันใช้แทน:setlocal :setหากคุณต้องการมีตัวเลือกเหล่านี้อยู่ตลอดเวลาควรใช้ตัวเลือกautocmdใน vimrc ของคุณ ตัวอย่างเช่น:

au FileType vim setlocal fo-=c fo-=r fo-=o

นี้จะตั้งค่าตัวเลือกเท่านั้นสำหรับ filetype 'กลุ่ม' และจะไม่ยุ่งเกี่ยวกับประเภทไฟล์อื่น ๆ

หากคุณต้องการเสมอตั้งมันใช้:

au FileType * set fo-=c fo-=r fo-=o

การใช้เพียงแค่set fo-=croจะไม่ทำงานเนื่องจากไฟล์ / เซ็ตขยายจำนวนมากformatoption(เช่นที่แสดงด้านบน); FileType autocmd จะถูกดำเนินการหลังจากที่ไฟล์ประเภทไฟล์ได้โหลด


1
ได้รับการยืนยัน นอกจากนี้ยังมีคำตอบที่นี่: stackoverflow.com/questions/16030639/vim-formatoptions-or
Melon

1
การเพิ่มau FileType * set fo-=o. vimrc ของฉันไม่ทำงาน ฉันกดoในบรรทัดที่มีความคิดเห็น
Ixx

สิ่งนี้ได้ดักฟังฉันมาเป็นเวลานาน เริ่มต้นformatoptionsคือการตัดไฟล์ txt ของฉัน ฉันถูกทำลายหัวของฉันรอบtextwidthและwrapmarginแต่ไม่มีอะไรทำงาน แม้แต่ลดระดับเสียงเรียกเข้าของฉันจาก 8.1 เป็น 8.0 คิดว่ามันเป็นข้อผิดพลาด สิ่งนี้แก้ไขปัญหาของฉันได้ขอบคุณ
anishjp

1

เพิ่มสิ่งนี้ใน vimrc ของคุณ:

au BufEnter * set fo-=c fo-=r fo-=o

การใช้FileTypeจะไม่ทำงานตั้งแต่ปลั๊กอินอื่น ๆ formatoptionที่กำหนด

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