วิธีแทรกอักขระแท็บเมื่อเปิดตัวเลือก expandtab ใน Vim


352

เมื่อฉันอยู่ในโหมดแทรกและฉันได้expandtabเปิดใช้งานตัวเลือกการกดTab ↹ผลลัพธ์ในการแทรกจำนวนช่องว่างที่กำหนดไว้

แต่บางครั้งฉันต้องการแทรกอักขระแท็บจริง

คุณรู้วิธีการทำเช่นนี้?

คำตอบ:


516

คุณสามารถใช้<CTRL-V><Tab>ใน "โหมดแทรก" ในโหมด<CTRL-V>แทรกให้แทรกตัวอักษรตัวอักษรต่อไปของคุณ

หากคุณต้องการทำสิ่งนี้บ่อย @ @ Dee`Kej แนะนำการตั้งค่า (ในความคิดเห็น) Shift+ Tabเพื่อแทรกแท็บจริงด้วยการทำแผนที่นี้:

:inoremap <S-Tab> <C-V><Tab>

นอกจากนี้ตามที่ระบุไว้โดย @feedbackloop บน Windows ที่คุณอาจต้องกดมากกว่า<CTRL-Q><CTRL-V>


33
จากนั้นใช้.เพื่อทำซ้ำคำสั่งสุดท้ายหากคุณต้องการแทรกหลายแท็บ
ซาเวียร์ต.

10
ฉันมีปัญหาในการใช้ชุดค่าผสมนี้เนื่องจากฉันอยู่ในโหมดคำสั่ง ตรวจสอบให้แน่ใจว่าคุณดำเนินการคำสั่งนี้ในโหมดแก้ไข
mgfernan

11
โหมด INSERT ในทางเทคนิค
mkmurray

2
หมายเหตุ: หากคุณใช้ gVim บน Windows คุณอาจต้องใช้CTRL+ Qแทน - ดูstackoverflow.com/questions/6951672/…
feedbackloop

8
ฉันเพิ่งเป็นทางลัดที่ง่ายสำหรับกรณีนี้และดูเหมือนว่าจะใช้งานได้ (ไม่ทำลายอะไรเลย): inoremap <S-Tab> <C-V><Tab>- คุณสามารถวางไว้ใน~/.vimrcไฟล์ของคุณ
Dee'Kej

34

คุณสามารถปิดการใช้งานตัวเลือก expandtab ได้จากภายใน Vim ดังนี้

:set expandtab!

หรือ

:set noet

PS:และตั้งกลับเมื่อคุณทำกับแท็บแทรกด้วย "set expandtab" หรือ "set et"

PS:หากคุณมีแท็บตั้งค่าเท่ากับ 4 ช่องว่างใน. vimrc (softtabstop) คุณอาจต้องการตั้งค่าเป็น 8 ช่องว่างเพื่อให้สามารถแทรกแท็บได้โดยกดปุ่มแท็บหนึ่งครั้งแทนสองครั้ง (ตั้งค่า softtabstop = 8 )


ในระยะสั้น: set etและset noetเพื่อสลับtabและspaceตามความต้องการ
Eric Wang

Ctrl + V ทำให้การวางเกิดขึ้นและฉันไม่มีเวลาปรับการโยงคีย์ สิ่งนี้ช่วย
Shirish Hirekodi

2

จากเอกสารเกี่ยวกับexpandtab:

การแทรกแท็บจริงเมื่ออยู่ในการใช้งานexpandtab ดูเพิ่มเติมและขยายแท็บ ตัวเลือกนี้จะถูกรีเซ็ตเมื่อ มีการตั้งค่าและกู้คืนตัวเลือกเมื่อมีการรีเซ็ตตัวเลือกCTRL-V<Tab>:retab
pastepaste

ดังนั้นหากคุณมีแผนที่สำหรับสลับpasteตัวเลือกเช่น

set pastetoggle=<F2>

<F2>Tab<F2>คุณยังสามารถทำ

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