Başka bir dosyadan kodu kopyaladığımda, biçimlendirme şu şekilde berbat:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Bu kodu vim'de nasıl otomatik olarak biçimlendirebilirim?
Başka bir dosyadan kodu kopyaladığımda, biçimlendirme şu şekilde berbat:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Bu kodu vim'de nasıl otomatik olarak biçimlendirebilirim?
Yanıtlar:
Aşağıdaki tuş vuruşlarını deneyin:
gg=G
Açıklama: gg
Dosyanın en üstüne gider =
, girintiyi düzeltmek için kullanılan bir komuttur G
ve dosyanın sonuna kadar işlemi gerçekleştirmesini söyler.
Sanatsal Stil programını kullanmayı seviyorum. Web sitelerine göre :
Sanatsal Stil, C, C ++, C # ve Java programlama dilleri için bir kaynak kodu indenter, formatlayıcı ve güzelleştiricidir.
Windows, Linux ve Mac'te çalışır. Bu gibi (dönüştürme ancak operasyonlar etrafında boşluk koyarak, boşluklar veya tersi ile sekmeleri yerine girinti gibi şeyler yapacağız if(x<2)
eğer ( x<2 )
fonksiyon tanımları aynı satırda parantez koyarak ya taşımayı nasıl hoşuna eğer yıllardan) Tüm seçenekler komut satırı parametreleri tarafından kontrol edilir.
Vim'de kullanmak için formatprg seçeneğini ona ayarlayın ve sonra gq komutunu kullanın. Yani, örneğin, benim .vimrc içinde var:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
bir .cpp dosyasını her açışımda formatprg benim sevdiğim seçeneklerle ayarlanır. Sonra, dosyanın en üstüne gitmek gqGve tüm standartları standartlara göre biçimlendirmek için gg yazabilirim . Yalnızca tek bir işlevi yeniden biçimlendirmem gerekirse, işlevin en üstüne gidebilirim, sonra yazabilir gq][ve yalnızca bu işlevi yeniden biçimlendirir.
Astyle için sahip olduğum seçenekler -T4pb
sadece benim tercihlerim. Sen üzerinden bakabilirsiniz onların docs ve ancak sizin gibi kod biçimlendirmek için seçenekleri değiştirmek.
İşte bir demo. Astyle'den önce:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
Astyle'den sonra (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
Umarım yardımcı olur.
Eklenti vim-autoformat, tamponunuzu (veya tampon seçimlerinizi) tek bir komutla formatlamanızı sağlar: https://github.com/Chiel92/vim-autoformat . Bunun için harici format programları kullanır ve vim'in girinti işlevine bir geri dönüş sağlar.
Bunun clang-format
işe yaradığını görüyorum .
Clang belgelerinde bazı örnek tuş bağlantıları vardır
equalprg
Bağlamayı vim'de kullanmayı tercih ederim . Bu çağırmaya sağlayan clang-format
ile G=gg
veya başka =
girinti seçenekleri.
Aşağıdakileri .vimrc dosyanıza koymanız yeterlidir:
autocmd FileType c,cpp setlocal equalprg=clang-format
sudo apt install clang-format
severim indent
Yukarıda belirtildiği , ancak çoğunlukla üzerinde çalıştığım dosyanın sadece küçük bir bölümünü biçimlendirmek istiyorum. Yana indent
stdin, onun gerçekten basit kod alabilir:
:!indent
.astyle
stdin de alır, böylece orada aynı hileyi kullanabilirsiniz.
Eklemek istedim, :set paste
yapıştırmadan önce yazabileceğiniz ilk etapta karışmasını önlemek için . Yapıştırdıktan sonra :set nopaste
js-beautify ve tekrar çalışmaya girintileme gibi şeyler yazabilirsiniz .
:set paste!
için, macun değerini ayarlamak yerine değiştiririm. Bu, birkaç komutu geri kaydırıp enter tuşuna basabileceğiniz için kapanmayı kolaylaştırır.