Bir komut kullanarak kaynak dosyanızdaki her şeyin sekmesini otomatik olarak kaldırmanın bir yolu var mı? [kapalı]


11

Ve sonra bundan sonra otomatik olarak yeniden girinti yapmak için? Bir terminal ekranından diğerine kod kopyalamayı denedim, ama tablo tüm berbat.

Bu işlevselliği neyi arayacağımı bilmiyordum, bu yüzden Google'da bulmak zor oldu (bu genellikle ne yazık ki aradığım şey olmayan sekme boyutunu ayarlama ile ilgili şeyler döndürdü).



1
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum çünkü bu bir programlama aracıyla ilgili. Araçlar hakkındaki sorular StackOverflow veya bu durumda Vi.SE için daha uygundur . Ancak bu soru taşınmak için çok eski.

1
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum çünkü belirli bir aracın kullanımı hakkında ve Yığın Taşması veya (şimdi sorulmuşsa) vi.se sorulmalıydı .

Yanıtlar:


9

retabVim'de belgenizi tablo haline getirmenize ya da ayıklamanıza izin veren bir komut bulunur. Bu gibi ayarları kullanır tabstopve expandtab. Bu nedenle, sekmeleri boşluklarla değiştirmek istiyorsanız aşağıdakileri yapabilirsiniz:

:%retab

Tüm retabayrıntılar için belgelere bakın.

Uyarı Emptor : bu , bir satırın başında OLMAYAN sekmelerin yerini alır . Bu nedenle, dizelerin ortasında sert sekmeler kullanırsanız, bunlar da değiştirilecektir.


3
Genel olarak, yine de bir dizeye gerçek bir sekme eklemek kötü bir fikir olarak kabul edilir. Yine de \tbu tür sorunlardan kaçınmak için olabilir, ancak tercih edilir.
Spencer Rathbun

6

@ Kaleb'in cevabını genişletmek için (henüz yorum yapacak temsilcim yok), retab komutunu çalıştırmadan önce, yapmanız gerekecek :set expandtab (set et). Aksi takdirde, tablo sekmeleri boşluklarla değiştirmez.

Ek olarak, sekme masalarını belirtmek isteyebilirsiniz. Genellikle başkaları tarafından oluşturulan kaynak kodunda, kod 4 veya hatta 2 olarak ayarlanmış sekmelerle yazılır. Komutu yapmadan önce :%retabfarklı sekme masalarını deneyin. Deneyin

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

hangi ayarın en anlamlı olduğunu görmek için.

Geri gitmek için (boşlukları uygun SEKME karakterleriyle değiştirmek için

:set noet
:%retab!

1

Sekmeyi unutma ile, sekmeleri boşluk olarak değiştirmek mi istiyorsunuz? Öyleyse, tüm arabelleğin içindeki sekmeler için boşlukları aşağıdaki gibi değiştirin:

:%s/^I/    /g

Bu, oyuncu değişikliğinin sağ tarafındaki dört boşluktur, ancak istediğiniz sayıda yapabilirsiniz. Değişmez ^Isekme karakterini almak için ^Vönce Sekme tuşuna basabilirsiniz.

Komutla yeniden girinti yapabilirsiniz =. Arabelleğin tüm içeriğini yeniden girintilemek için şu komutları kullanın:

gg
=G

Bu sizi en üste götürür, ardından her şeyi en alta girintiler.


-1: Bir sekmeyi sabit sayıda boşlukla değiştirmek neredeyse hiç işe yaramaz. Öncesinde sekme olmayan bir sekme içeren herhangi bir satırın görünümünü değiştirir.
kevin cline
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.