Ekranın dörtte birini (% 25) yukarı veya aşağı kaydırın


15

Sıklıkla tam bir sayfayı kaydırmanın çok yönünü şaşırmış, yarım sayfayı çok fazla buluyorum, ancak çeyrek sayfa doğru. Şu anda sadece ok tuşlarını basılı tutarak yapıyorum.

Sayfanın% 25'ini kolayca aşağı ve yukarı nasıl kaydırabilirim?


1
bu cevapta çarpı işaretli işlevi kontrol edin: stackoverflow.com/a/3102890
Sundeep

Yanıtlar:


20

Belki ctrldve ctrluaradığınız şey olabilir. Varsayılan olarak ekranın yarısını taşırlar.

Gönderen :h CTRL-D:

Pencerede arabellekte aşağı kaydırın. Satır sayısı 'kaydırma' seçeneğinden gelir (varsayılan: yarım ekran).

[Sayım] verilmişse, önce 'kaydırma' seçeneğini [sayım] olarak ayarlayın.

Bu, bir pencerede ilk kez kaydırma yapmak istediğinizde, XXctrldXX'nin pencerenizdeki satır sayısının% 25'i olduğu anlamına gelir . scrollXX değerine ayarlandığında , ekranın% 25'ini taşımak için ctrldve ctrlutuşlarını kullanabilirsiniz .

Ayrıca, bunun :h scrollingsizin için ilginç olabileceğini düşünüyorum .


Düzenle

Ve işte size bir işlev ve bazı eşlemeler eklemek için başka bir çözüm .vimrc:

function! ScrollQuarter(move)
    let height=winheight(0)

    if a:move == 'up'
        let key="\<C-Y>"
    else
        let key="\<C-E>"
    endif

    execute 'normal! ' . height/4 . key
endfunction

nnoremap <silent> <up> :call ScrollQuarter('up')<CR>
nnoremap <silent> <down> :call ScrollQuarter('down')<CR>

İşlev geçerli pencerenin yüksekliğini alacak ve parametresine göre ekranı yüksekliğin dörtte biri kadar aşağı veya yukarı kaydıracaktır.

Eşleştirmeler işlevi çağırır, ilki yukarı, ikincisi aşağı iner.

Tabii ki, değiştirebilir <up>ve <down>size ok tuşları varsayılan davranışını tutmak istiyorsanız diğer bazı tuşlara.


2
Kullanılması ctrl-Eve ctrl-Yeşlemelerde daha mantıklı görünebilir , çünkü a). daha sonra hem 1/2 sayfa hem de 1/4 sayfa kaydırma için ayrı kısayollarınız olur. b). ctrl-U/ ctrl-Döğesinin davranışı tutarlıdır ve eşlemeyi daha önce kullanıp kullanmadığınıza bağlı değildir.
Zengin

Önemli notunu anlamıyorum. Manuel olarak girmek ne demek istiyorsun? Şu anda bunu kullanmak, sayfayı taşımak yerine bir satırı siler.
Louis Hong

@LouisHong let key="^U"Çift tırnak arasındaki kısmın anahtar kodunu temsil ettiği satıra bakın ctrl+u. Kopyaladığınız Yani vim Fonksiyon ilk çift tırnak hit üzerinde imleci ci"tırnak içeriğini değiştirmek ve daha sonra hit ctrl+vardından ctrl+uhat üzerinde aynı etmek let key="^D".
statox

@Rich: Evet, bu iyi bir nokta. Ok tuşlarını kullandım çünkü OP'nin kullandığı buydu, ama sizin açınızdan alakalı.
statox

@statox Beni yanlış anladın! (Ben net değildim). Bunun let key="^Y"yerine kullanmak istedim let key="^U". 'scroll'Ayarı etkilemeden aynı davranışı oluşturur .
Zengin


3

Ben variated statox o linewraps üzerinde daha tutarlı kayar böylece yaklaşım. Çeyrek adım istiyorsanız, 0,618'i tekrar 0,25 olarak değiştirin.

function! ScrollGolden(move)
    let height=winheight(0)
    if a:move == 'up'
        let prep='L'
        " let key="^Y"
        let key='gk'
        let post='zb'
    elseif a:move == 'down'
        let prep='H'
        " let key="^E"
        let key='gj'
        let post='zt'
    endif
    execute 'normal! ' . prep . float2nr(round(height*0.618)) . key . post
endfunction
nnoremap <silent> <BS>    :call ScrollGolden('up')<CR>
nnoremap <silent> <Space> :call ScrollGolden('down')<CR>

0

Tam bir% 25 değil, iyi bir genel yanıt istiyorsanız, bir sayfadaki normal satır sayısını 25'e bölerek ve bazı sistem eşlemeleri ayarlayabilirsiniz. Örneğin, normalde ekranda bir seferde yaklaşık 100 satırınız varsa, bunun% 25'i 25 satırdır, böylece 25 satır hızla yukarı ve aşağı hareket etmek için başkent J ve K gibi bir şey üzerinde bir anahtar eşleme ayarlayabilirsiniz.

noremap J 25j
noremap K 25k

Tüm dosyanın çeyrek işaretine atlamak istiyorsanız normal modda şunu yazın:

25%

1
Çözümünüzün iki dezavantajı olduğunu düşünüyorum: noremap J 25jdeğeri kodlar, 25örneğin 100 satır penceresini yatay olarak böldüğünüzde, eşlemeniz yeni pencerelerin% 50'sinde gezinir. İkinci seçeneğiniz hakkında :25%var olduğunu bilmiyordum ama testlerimden imleci ilk satıra dayanan bir konuma getiriyor gibi görünüyor: 100 satırlık bir tamponum varsa ve% 25 ileriye doğru yazmak istersem :25%bana getirecek imlecimin nerede olduğu önemli değil. Ayrıca, dokümanda bulamadığım bu özelliği açıklayan yardım konusunu da koyabilir misiniz?
statox

1
Yardım konusunu :h N%:-)
statox'ta buldum
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.