Satır girintisini belirli bir değere nasıl kaydırırım?


11

Çoğu zaman, bir satırın düzgün girintili olmadığı bir durumla karşılaşıyorum. Bir macun, kötü / tercih edilmeyen girinti eklentisi veya girinti değerini dengeleyen ekstra boşluklar aracılığıyla eter. Bunu düzeltmek için genellikle birkaç kez <<veya >>satırda düzeltirim. Ekstra boşluklar söz konusu olduğunda, aslında istediğim her girinti seviyesi için bir 100<<a yapacağım >>.

Soru, |sütunu numaraya göre ayarlamanıza izin veren hareket gibi 10|, imleci 10. sütuna gönderir. Girinti seviyesini nasıl belirleyebilirim?

Şununla bir örnek (bu işe yaramaz) shiftwidth=4 expandtab:

The quick (indent level 0)
••••Brown Fox (indent level 1)
••••••••••Jumped over the lazy dog (indent level 2 with two extra spaces)

Bu durumda, şu anda son satırın (2) 3<<girinti seviyesini saymam ve ekstra boşluklar için bir tane eklemem ve daha sonra yazdığım şeyin girinti seviyesini saymam 1>>(veya kullan autoindentve ==komut).

1==Girintiyi seviye 1 olmaya zorlamak gibi bir şey istiyorum . Veya bazı durumlarda 0==bir girintiyi birlikte kaldırmak için.

Yukarıdaki örneğin 1 veya 0 satırda otomatik girintili olduğunu fark ediyorum (sırasıyla) ve böylece istediğim şeyi yapmıyor ama sorunun daha iyi gösterilmesine yardımcı olacağını umuyordum.

Yanıtlar:


18

:leftKomutu kullanabilirsiniz :

:[range]le[ft] [indent]
Satırları sola hizala [range]. Satırlardaki girintiyi [indent](varsayılan 0) olarak ayarlar . {Vi'da değil}

Not o :leftsetleri için girinti n boşluklar ve farkında değildir shiftwidthya da tabstopöylesine kullanarak, :left 88 boşluk kullanacaktır.

Girinti seviyesini ayarlamak istiyorsanız, kolayca bir komut tanımlayabilirsiniz:

command! -nargs=1 Left execute 'left ' . &sw * <args>

Kullanım :Left 2girintiyi 8 boşluğa ayarlayacaktır.

Bunu şuna eşlemek için <Leader>=şunları kullanabilirsiniz:

noremap <expr> <Leader>= ':left ' . str2nr(nr2char(getchar())) * &sw . '<CR>'

Bunun en iyi yol olup olmadığından emin değilim, ancak yönetebilmemin tek yolu ... \=2mevcut satırı 8 5\=3aralığa girintili kılacak ve sonraki 5 satırı 12 aralığa girintili kılacak.


Sorununuzu da çözen ilgili bir ipucu shiftroundseçeneği ayarlamaktır . itibaren:help 'shiftround'

Birden çok yuvarlak girintili 'shiftwidth'. Uygulanır >ve < komutlara uygulanır . Ekle modunda CTRL-T ve CTRL-D, girintiyi her zaman katının etrafına yuvarlar 'shiftwidth'(bu Vi uyumludur).

Örneğinizde, ilk <<sayı 8 boşluğa "yuvarlanacaktır". Böylece probleminiz ( 3<<ve ardından >>) çözülür. Yardım sayfasının dediği gibi, <C-d>ekleme modundan da kullanabilirsiniz .


Müthiş! Bu çözümler mükemmel çalışır.
Sukima
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.