ทุกครั้งที่ฉันเพิ่มตัวเลือกใน CSS และฉันกดEnter
เพื่อกำหนดคุณสมบัติที่มันจะเป็นดังนี้:
#selector {
property: value;
}
(แท็บ 8 ช่องว่าง)
ฉันจะกำหนดค่า Vim ให้เป็นแบบนี้ได้อย่างไร:
#selector {
property: value;
}
(แท็บ 4 ช่องว่าง)
ทุกครั้งที่ฉันเพิ่มตัวเลือกใน CSS และฉันกดEnter
เพื่อกำหนดคุณสมบัติที่มันจะเป็นดังนี้:
#selector {
property: value;
}
(แท็บ 8 ช่องว่าง)
ฉันจะกำหนดค่า Vim ให้เป็นแบบนี้ได้อย่างไร:
#selector {
property: value;
}
(แท็บ 4 ช่องว่าง)
คำตอบ:
ขยายคำตอบของ zoul:
หากคุณต้องการตั้งค่า Vim ให้ใช้การตั้งค่าเฉพาะเมื่อทำการแก้ไขไฟล์ชนิดใดประเภทหนึ่งคุณจะต้องใช้งานเอกสารอัตโนมัติ:
autocmd Filetype css setlocal tabstop=4
สิ่งนี้จะทำให้แท็บนั้นปรากฏเป็น 4 ช่องว่าง การตั้งค่าexpandtab
จะทำให้ Vim แทรกช่องว่างจริง ๆ (จำนวนที่ควบคุมโดยtabstop
) เมื่อคุณกดแท็บ คุณอาจต้องการใช้softtabstop
เพื่อทำให้แบ็คสเปซทำงานอย่างถูกต้อง (นั่นคือลดการเยื้องเมื่อเป็นสิ่งที่จะเกิดขึ้นหากใช้แท็บแทนที่จะลบครั้งละหนึ่งอักขระในเวลาเดียวกัน
ที่จะทำให้การตัดสินใจการศึกษาอย่างเต็มที่เป็นวิธีการกำหนดสิ่งขึ้นคุณจะต้องอ่านเอกสารที่เป็นกลุ่มบนtabstop
, shiftwidth
, และsofttabstop
expandtab
บิตที่น่าสนใจที่สุดอยู่ใต้expandtab
( :help 'expandtab
):
มีสี่วิธีหลักในการใช้แท็บใน Vim:
เก็บ 'tabstop' ไว้ที่ 8 เสมอตั้ง 'softtabstop' และ 'shiftwidth' เป็น 4 (หรือ 3 หรืออะไรก็ได้ที่คุณต้องการ) และใช้ 'noexpandtab' จากนั้นกลุ่มจะใช้แท็บและช่องว่างผสมกัน แต่การพิมพ์และจะทำงานเหมือนแท็บจะปรากฏขึ้นทุก ๆ 4 (หรือ 3) ตัวอักษร
ตั้งค่า 'tabstop' และ 'shiftwidth' เป็นสิ่งที่คุณต้องการและใช้ 'expandtab' วิธีนี้คุณจะแทรกช่องว่างเสมอ การจัดรูปแบบจะไม่สับสนเมื่อมีการเปลี่ยนแปลง 'tabstop'
ตั้งค่า 'tabstop' และ 'shiftwidth' เป็นสิ่งที่คุณต้องการและใช้ | modeline | เพื่อตั้งค่าเหล่านี้เมื่อแก้ไขไฟล์อีกครั้ง ใช้งานได้เฉพาะเมื่อใช้ Vim เพื่อแก้ไขไฟล์
ตั้งค่า 'tabstop' และ 'shiftwidth' เป็นค่าเดียวกันเสมอและ 'noexpandtab' สิ่งนี้จะใช้งานได้ (สำหรับการเยื้องเริ่มต้นเท่านั้น) สำหรับการตั้งค่า tabstop ใด ๆ ที่ผู้คนใช้ มันอาจจะดีถ้ามีแท็บหลังจากแทรกช่องว่างแรกเป็นช่องว่างถ้าคุณทำเช่นนี้ ความคิดเห็นที่จัดแนวมิฉะนั้นจะผิดเมื่อ 'tabstop' เปลี่ยน
:help retab
(ตรวจสอบ! ตัวแปร)
:set tabstop=4
:set shiftwidth=4
:set expandtab
สิ่งนี้จะแทรกช่องว่างสี่ช่องแทนที่จะเป็นอักขระแท็บ ช่องว่างนั้นค่อนข้าง“ เสถียร” มากกว่าซึ่งหมายความว่าข้อความที่เยื้องกับช่องว่างจะปรากฏในเบราว์เซอร์และแอปพลิเคชันอื่น ๆ
:set shiftwidth=0
ใน vimrc tabstop
ของคุณและลืมเกี่ยวกับมันตลอดไปเพราะนี้เป็นกลุ่มบอกว่าคุณต้องการให้การแข่งขัน
ในการเปลี่ยนแปลงหนึ่งเซสชันให้ใช้คำสั่งนี้:
:set tabstop=4
หากต้องการทำการเปลี่ยนแปลงแบบถาวรให้เพิ่มลงใน~/.vimrc
หรือ~/.vim/vimrc
:
set tabstop=4
สิ่งนี้จะมีผลกับไฟล์ทั้งหมดไม่ใช่แค่ css หากต้องการส่งผลต่อไฟล์ css เท่านั้น:
autocmd Filetype css setlocal tabstop=4
~/.vimrc
มีการสำรองข้อมูลอยู่เสมอฉันมักจะบันทึกไฟล์ไว้ในโฟลเดอร์ Dropbox ของฉันจากนั้นสร้างลิงค์ sym ไปยังเดสก์ท็อป:ln -s /home/myfolder/Dropbox/.vimrc ~
คำตอบหลายข้อในหน้านี้เป็นการแก้ไขแบบ 'ใช้ครั้งเดียว' สำหรับปัญหาที่อธิบายไว้ หมายความว่าในครั้งต่อไปที่คุณเปิดเอกสารที่มี vim การตั้งค่าแท็บก่อนหน้าจะกลับมา
หากใครสนใจเปลี่ยนการตั้งค่าแท็บอย่างถาวร:
เพิ่มบรรทัดต่อไปนี้: ( ข้อมูลเพิ่มเติมที่นี่ )
set tabstop=4 set shiftwidth=4 set expandtab
จากนั้นบันทึกไฟล์และทดสอบ
ในฐานะที่เป็นหนึ่งซับเข้าไปในกลุ่ม :
:set tabstop=4 shiftwidth=4 expandtab
สำหรับการตั้งค่าถาวรเพิ่มบรรทัดเหล่านี้ใน~ / .vimrc :
set tabstop=4
set shiftwidth=4
set expandtab
UPDATE
ถ้าคุณกำลังทำงานในโครงการโดยเฉพาะอย่างยิ่งผมขอแนะนำให้ใช้editorconfig
มันช่วยให้คุณกำหนด.editorconfig
ไฟล์ที่รูทของที่เก็บของคุณกำหนดการเยื้องที่คุณต้องการใช้สำหรับไฟล์แต่ละประเภทข้ามที่เก็บของคุณ
ตัวอย่างเช่น:
root = true
[*.css]
charset = utf-8
indent_style = space
indent_size = 4
[*.js]
charset = utf-8
indent_style = space
indent_size = 2
มีvim pluginที่กำหนดค่า vim โดยอัตโนมัติตามไฟล์ config สำหรับไฟล์ที่คุณเปิด
ยิ่งไปกว่านั้น.editorconfig
ไฟล์ดังกล่าวได้รับการสนับสนุนโดยอัตโนมัติบน IDE และบรรณาธิการอื่น ๆ อีกมากมายดังนั้นจึงเป็นตัวเลือกที่ดีที่สุดสำหรับการทำงานร่วมกันระหว่างผู้ใช้ที่มีสภาพแวดล้อมที่แตกต่างกัน
คำตอบเดิม
หากคุณต้องการเปลี่ยนขนาดบ่อยครั้งและคุณไม่ต้องการผูกไฟล์นี้กับไฟล์เฉพาะคุณสามารถมีคำสั่งที่กำหนดไว้ล่วงหน้าในไฟล์. vimrc ของคุณเพื่อสลับการตั้งค่าได้อย่างรวดเร็ว:
nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>
นี่แมปขนาดที่แตกต่างกันสองชุดกับคีย์ \ t และ \ m คุณสามารถเชื่อมโยงสิ่งนี้กับกุญแจที่คุณต้องการ