ที่ทำงานของฉันฉันต้องทำตามสไตล์ของบ้านสำหรับการเยื้องซึ่งจะเป็นดังนี้:
- 2 ช่องว่างเมื่อเขียนโค้ด html และ ruby
- แท็บเมื่อเข้ารหัสจาวาสคริปต์โดยมี tabwidth = 4 แนะนำ
วิธีที่ดีที่สุดในการระบุการตั้งค่าช่องว่างต่าง ๆ ต่อประเภทไฟล์คืออะไร
ที่ทำงานของฉันฉันต้องทำตามสไตล์ของบ้านสำหรับการเยื้องซึ่งจะเป็นดังนี้:
วิธีที่ดีที่สุดในการระบุการตั้งค่าช่องว่างต่าง ๆ ต่อประเภทไฟล์คืออะไร
คำตอบ:
มีหลายวิธี แต่นี่เป็นวิธีที่ง่ายและเข้าใจง่าย เพิ่มบรรทัดเหล่านี้ใน~/.vimrc
:
autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4
คำตอบของปีเตอร์ตรงไปตรงมามากพอ แต่น่าเสียดายที่ตัวเลือกไม่ถูกต้อง คุณต้องใช้ตัวเลือกต่อไปนี้แทน:
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab
ทราบด้วย:
:set list
คุณสามารถทำให้ตัวละครที่เป็นกลุ่มการแสดงโดยใช้แท็บ:retab!
คำสั่งexpandtab
มากเกินไปคืออะไรsts=2
+1 ถึงคำตอบของ Peter แต่ Vim ยังให้วิธีการอื่นเช่นกัน หากคุณต้องการทำสิ่งที่ซับซ้อนกว่าตัวเลือกเดียวsetlocal
เช่นการตั้งค่าตัวเลือกคำสั่งและการแม็พทั้งหมดในคราวเดียวคุณสมบัติของปลั๊กอินประเภทไฟล์ของ vim จะเข้ามาช่วย
คุณจำเป็นต้องมีfiletype plugin on
หรือfiletype plugin indent on
ในของคุณและจากนั้นจะสร้างปลั๊กอินสำหรับเช่นทับทิมคุณสามารถสร้าง.vimrc
~/.vim/ftplugin/ruby.vim
ในทางเทคนิคคุณสามารถใช้คำสั่งใด ๆ ที่คุณชอบในที่นี่จะทำงานเมื่อไฟล์ทับทิมจะโหลด แต่คนที่แนะนำ ได้แก่setlocal
, map <buffer>
, command -buffer
และกำหนดฟังก์ชั่น ข้อมูลเพิ่มเติมมากมายอยู่ในคู่มือผู้ใช้; ถ้าคุณกำลังสวยคุ้นเคยกับเสียงเรียกสคริปต์แล้วโดดไป:help 41.11
มิฉะนั้นอ่านและ:help usr_40
:help usr_41
นอกจากนี้ยังมีสคริปต์เป็นกลุ่มที่ดี: DetectIndentซึ่งพยายามตรวจจับการเยื้องของไฟล์ที่คุณเปิด มันมีประโยชน์มากถ้าคุณทำงานกับไฟล์จำนวนมากที่มีรูปแบบการเข้ารหัสที่แตกต่างกัน
ฉันใช้ข้อความอัตโนมัติใน. vimrcของฉัน:
:autocmd BufReadPost * :DetectIndent
หากต้องการแทรกอักขระช่องว่างเมื่อใดก็ตามที่กดปุ่มแท็บให้ตั้งค่าตัวเลือก 'expandtab':
:set expandtab
ขั้นตอนต่อไปคือการควบคุมจำนวนตัวอักษรเว้นวรรคที่จะถูกแทรกเมื่อกดปุ่มแท็บตั้งค่าตัวเลือก 'tabstop' ตัวอย่างเช่นในการแทรก 2 ช่องว่างสำหรับแท็บให้ใช้:
:set tabstop=2