มีวิธีการยกเลิกการแท็บทุกอย่างในไฟล์ต้นฉบับของคุณโดยใช้คำสั่งหรือไม่? [ปิด]


11

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

ฉันไม่รู้ว่าจะเรียกฟังก์ชันนี้ว่าอะไรดังนั้นจึงเป็นเรื่องยากสำหรับฉันที่จะพบมันบน google (ซึ่งโดยทั่วไปแล้วจะส่งคืนสิ่งต่าง ๆ ที่เกี่ยวข้องกับวิธีการตั้งค่าขนาดแท็บซึ่งไม่ใช่สิ่งที่ฉันมองหา)



1
ฉันลงคะแนนเพื่อปิดคำถามนี้เป็นแบบปิดหัวข้อเนื่องจากเป็นเรื่องเกี่ยวกับเครื่องมือการเขียนโปรแกรม คำถามเกี่ยวกับเครื่องมือที่มีความเหมาะสมดีกว่าที่จะStackOverflowหรือในกรณีนี้Vi.SE อย่างไรก็ตามคำถามนี้เก่าเกินไปที่จะโยกย้าย

1
ฉันลงคะแนนเพื่อปิดคำถามนี้เป็นปิดหัวข้อเพราะมันเป็นเรื่องเกี่ยวกับการใช้เครื่องมือที่เฉพาะเจาะจงและควรได้รับการถามในกองมากเกินหรือ (ถ้าถามตอนนี้) vi.se

คำตอบ:


9

Vim มีretabคำสั่งที่อนุญาตให้คุณจัดระเบียบหรือยกเลิกการแปลงเอกสารของคุณ โดยจะใช้การตั้งค่าเช่นและtabstop expandtabดังนั้นหากคุณต้องการแทนที่แท็บด้วยช่องว่างคุณสามารถทำสิ่งต่อไปนี้:

:%retab

ดูretabเอกสารประกอบสำหรับรายละเอียดทั้งหมด

Caveat Emptor : สิ่งนี้จะแทนที่แท็บที่ไม่ใช่จุดเริ่มต้นของบรรทัด ดังนั้นหากคุณใช้ฮาร์ดแท็บที่อยู่ตรงกลางสตริงพวกเขาจะถูกแทนที่ด้วย


3
โดยทั่วไปถือว่าเป็นความคิดที่ดีที่จะรวมแท็บจริงไว้ในสตริง มันยังสามารถเกิดขึ้นได้ แต่\tเป็นที่ต้องการเพียงเพื่อหลีกเลี่ยงปัญหาประเภทนี้
Spencer Rathbun

6

เพื่อขยาย @ คำตอบของ Kaleb (ผมไม่ได้มีตัวแทนยังไม่ได้แสดงความคิดเห็น) ก่อนที่จะดำเนินการคำสั่ง retab :set expandtab (set et)ที่คุณจะต้อง มิฉะนั้นแท็บจะไม่แทนที่แท็บด้วยช่องว่าง

ใน additon คุณอาจต้องการระบุ tabstops บ่อยครั้งที่ในซอร์สโค้ดที่สร้างโดยผู้อื่นโค้ดจะถูกเขียนด้วย tabstops ที่ตั้งค่าเป็น 4 หรือ 2 ก่อนที่จะทำการ:%retabคำสั่งให้ทดลองใช้ tabstops ต่าง ๆ ลอง

:set ts=8 (the default)
:set ts=4 
:set ts=2  

เพื่อดูว่าการตั้งค่าใดที่เหมาะสมที่สุด

หากต้องการย้อนกลับ (แทนที่ช่องว่างด้วยอักขระ TAB ที่เหมาะสมให้ใช้

:set noet
:%retab!

1

เมื่อยกเลิกการแท็บคุณหมายถึงการเปลี่ยนแท็บเป็นช่องว่างหรือไม่ หากเป็นเช่นนั้นให้แทนที่ช่องว่างสำหรับแท็บในบัฟเฟอร์ทั้งหมดดังนี้:

:%s/^I/    /g

นั่นคือช่องว่างสี่ช่องทางด้านขวาของการเปลี่ยนตัว แต่คุณสามารถทำมันได้ตามที่คุณต้องการ ในการรับ^Iอักขระแท็บตัวอักษรคุณสามารถกด^Vตามด้วยปุ่ม Tab

คุณสามารถเยื้องด้วย=คำสั่ง เมื่อต้องการเยื้องเนื้อหาทั้งหมดของบัฟเฟอร์อีกครั้งให้ใช้คำสั่งเหล่านี้:

gg
=G

สิ่งนี้จะนำคุณไปยังด้านบนแล้วเยื้องทุกสิ่งไปที่ด้านล่าง


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