>> ile bir sonraki girinti seviyesine girinti


9

Zaman zaman, genellikle dosyaya bir şey kopyaladıktan / yapıştırarak Vim'i ayarladığım (seviye başına 4 boşluk) girintiye girintili olmayan kodla çalışmak zorundayım. Genellikle ile yetinmek <<ve >>. Sorun şu ki bir sonraki girinti seviyesine atlamıyorlar, sadece 4 boşluk ekliyor veya çıkarıyorlar.

Böyle bir kodum varsa

if condition:
    do this
   do that

yapıyor >>üzerinde do thatneden olur

if condition:
    do this
       do that

Buna gitmesini istiyorum

if condition:
    do this
    do that

Yukarıdaki satırın girintisini kolayca eşleştirmenin yanı sıra, bir sonraki girinti seviyesine atlamasını istiyorum, 4 boşluk eklemeyin.

Girintiyle ilgili .vimrc dosyamda olan şey bu

:set tabstop=4 shiftwidth=4 expandtab

Ayrıca varsa filetype plugin indent onsizin içinde .vimrc, filetype (ve eklenti) girinti-ilişkili kurallar geçerlidir. Yani düzenleme yaparken tabstopdeğerinizin gerçekte ne olduğunu kontrol edin ( set tabstop?diğer ayarlar için de aynıdır) ve satırınızı bir 'after' dosyasına ekleyerek bu değerleri değiştirin: stackoverflow.com/a/159066/5000478
VanLaser

3
>>ve <<sırasıyla istediğiniz olmayan girinti ekleyip kaldırın. İstediğiniz "biçimlendirme" ile yapılır ==.
romainl

:nnoremap >> ^i<tab><esc>gerçekten sekme davranışı istiyorsanız harita olabilir>>
Wolfie

@romainl ==yukarıdaki satır seviyesine atlayacak. Bilmek iyi bir şey olsa da, ilgilendiğim tüm durumlarda işe yaramaz. Soruya ek olarak, istediğim şey şu >>ve <<bu yönde sınırdan bir sonraki vardiya genişliğinin katlarına girintili / girintili olmak .
Dumitru

2
Hayır, verilen satırları yeniden biçimlendirmek için veya öğelerini ==kullanır . equalexprequalprg
romainl

Yanıtlar:


12

Eğer komutların birini kullandığınızda {count}>>, {count}<<, >{motion}veya <{motion}zaten girintili olan bazı hatlarda, ve onların yeni girinti düzeyi katları olmak istiyorum 'shiftwidth'seçeneği değeri etkinleştirebilir 'shiftround'seçeneği ve Gözlerinde farklı bu satırı ekleyin vimrc:

set shiftround

2

Her zaman bir >>sonraki sekme tablasına girinti yapmak ve <<son sekme tablasına silmek istiyorsanız, bunları şu şekilde yeniden bağlayabilirsiniz:

:nnoremap << ^i<BS><esc>
:nnoremap >> ^i<tab><esc>

Bu, imleci hareket ettirir, ancak geri taşımak için muhtemelen bazı işaretler yapabilirsiniz. iz ^bırakmaz m', ancak ciltlemenin içinde elle bir tane bırakabilirsiniz.

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.