แทรกแท็บในโหมด INSERT เมื่อตั้งค่า expandtab


12

ฉันได้ตั้งค่าexpandtabใน.vimrcไฟล์ของฉันให้แปลงtabเป็นหลายspaceอักขระ อย่างไรก็ตามบางไฟล์ (เช่น Makefile) จำเป็นต้องมีtabอักขระจริง

มีวิธีง่าย ๆ ในการบังคับให้แทรกเมื่อtabฉันพิมพ์หรือไม่?

คำตอบ:


27

แทนที่จะเป็นเพียงการกดปุ่มTabกดครั้งแรกและจากนั้นกดCtrl-VTab

สามารถใช้เพื่อแทรกตัวอักษรพิเศษต่าง ๆ ได้ ดู:help i_CTRL-Vรายละเอียดที่

Ctrl-Vยังทำงานในโหมดบรรทัดคำสั่ง ( :help c-CTRL-V) และแม้กระทั่งในบางโปรแกรมอื่น ๆ ทั้งหมด (เช่น bash, mutt.)

ถ้าคุณได้แมปไปอย่างอื่นลองCtrl-V Ctrl-Qสิ่งนี้มีผลเหมือนกันใน Vim Ctrl-Vแต่เทอร์มินัลบางตัวใช้สำหรับควบคุมโฟลว์ซึ่งในกรณีที่ Vim จะไม่เห็นมัน


5
หรือ<c-v>009ในกรณีที่มีคีย์ Tab ที่เสียหายหรือไม่ยอมใครง่ายๆ ASCII
purist

17

แทนที่จะเปลี่ยนพฤติกรรมของคุณ (ซึ่งเป็นข้อผิดพลาดได้ง่าย)
ฉันจะตั้งค่ากลุ่มเพื่อทำงานแตกต่างกันสำหรับไฟล์ประเภทนี้

ดังนั้นในการแก้ไขปกติของฉันฉันขยายแท็บ แต่เฉพาะสำหรับmakeไฟล์ที่ฉันตั้งค่าnoexpandtabเพื่อให้แท็บยังคงอยู่

เพิ่มสิ่งต่อไปนี้ในไฟล์ ~ / .vimrc ของคุณ:

" Normal action
set expandtab

if has("autocmd")

    " If the filetype is Makefile then we need to use tabs
    " So do not expand tabs into space.
    autocmd FileType make   set noexpandtab

endif

3
ฉันตอบคำถามของเขา แต่คุณได้คิดออกแล้วว่าปัญหาพื้นฐานดีกว่าฉันอย่างไร Goodjob
รวย

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