İzleme dörtgenimi yatay kaydırma için nasıl kullanabilirim?


10

Trackpad kaydırmamın Vim, atalet ve hepsinde çalıştığını fark ettim. Bunu yatay olarak çalışacak şekilde değiştirmek istiyorum - böylece imlecin sağa ve sola doğru sağa doğru hareket etmesini sağlamak için yukarı ve aşağı kaydırabilirim.

Kaydırmamı sol / sağ hareketle nasıl eşleyebilirim?


2
Sidenote: Aynı hareket tuşuna arka arkaya birkaç kereden fazla basarsanız, muhtemelen yanlış yapıyorsunuz (kullanın wWeE$)}vb.) Ve ok tuşlarını kullanıyorsanız kesinlikle Vim'i yanlış kullanıyorsunuz demektir.
Doorknob

Yanıtlar:


4

:help scroll-mouse-wheelWin32 GUI kullanıyorsanız cevaba göre hayır.

Öte yandan, X11 GUI veya fare desteği olan konsol vim kullanarak, tekerlek yeniden eşleyebileceğiniz tuşa basar.

Böylece, tanımladığınız davranışı elde edebilirsiniz

:nmap <ScrollWheelUp> h
:nmap <ScrollWheelDown> l

nmapNormal modda eşleme için kullandığımı unutmayın .

Diğer modlarda benzer davranışlar elde etmek için normal anahtar yerine yöne eşleyebilirsiniz. Ekleme modu hareketi için:

:imap <ScrollWheelUp> <Left>
:imap <ScrollWheelDown> <Right>

Bunları varsayılan yapmak için onları vimrc'nizin altına yapıştırın.


Ben OP ne OSX kullanıyor, bu yüzden ne Win32 ne de X11 (büyük olasılıkla).
Seth

1
OSX için bir cevap var mı?
bsmith89

Ne yazık ki, vim belgeleri OSX'ten bahsetmiyor ve üzerinde denemek için kullanışlı bir OSX makinesi yok. :-(
John O'M.

1
ah, bundan bahsetmeliydim - OS X kullanıyorum, ancak çoğu zaman bir Ubuntu sunucusuna SSHing.
geri alma

Bu iyi haber! Ssh'nin diğer ucundaki vim kaydırma olaylarına yanıt veriyorsa, terminal öykünücünüz kaydırma olaylarını gönderir ve yukarıdaki cevap sizin için hem yerel olarak çalışan vim hem de uzaktan çalışan vim olmalıdır. Terminal öykünücünüzün adıyla yorum yaparsanız, cevaba ekleyeceğim.
John O'M.

4

Bunu Hammerspoon ve akıllı harita kullanımı ile yapmanın bir yolunu buldum .

İlk bölüm yatay kaydırmak için Shift+ ScrollUpve Shift+ ' ScrollDownyı yapılandırmaktır . Bunu yapmak için, aşağıdaki konularda aşağıdaki kod parçacığını koyduk .vimrc:

nnoremap <S-ScrollWheelUp> <ScrollWheelLeft>
nnoremap <S-2-ScrollWheelUp> <2-ScrollWheelLeft>
nnoremap <S-3-ScrollWheelUp> <3-ScrollWheelLeft>
nnoremap <S-4-ScrollWheelUp> <4-ScrollWheelLeft>
nnoremap <S-ScrollWheelDown> <ScrollWheelRight>
nnoremap <S-2-ScrollWheelDown> <2-ScrollWheelRight>
nnoremap <S-3-ScrollWheelDown> <3-ScrollWheelRight>
nnoremap <S-4-ScrollWheelDown> <4-ScrollWheelRight>

<S-2-ScrollWheelUp>Terminale de anahtar olarak gönderildiklerinden, ve benzerlerini kullanmamız gerektiğini unutmayın . Bu konuda hiçbir belge bulunamadı ( ekleme modunda kaydırma yaparken Ctrl+ kullanarak bunu anladım V).

Bundan sonra yatay kaydırmaları Shift+ dikey kaydırmaya yeniden eşlemeliyiz. Bunu yapmak için Hammerspoon'a aşağıdaki pasajı yerleştiriyoruzinit.lua

scrollBind = hs.eventtap.new({hs.eventtap.event.types.scrollWheel}, function(e)
  if is_active('iTerm2') then
    local horizontalOffset = e:getProperty(hs.eventtap.event.properties.scrollWheelEventDeltaAxis2)

    if horizontalOffset ~= 0 then
      hs.eventtap.scrollWheel({ 0, horizontalOffset }, {"shift"}, 'pixel')
      return true
    end
  end

  return false
end):start()

function is_active(program_name)
  local active_window_name = hs.window.focusedWindow():application():name()
  return active_window_name == program_name
end

scrollBindDeğişkeni, tuş vuruşu izleyicisinin Lua'nın çöp toplayıcısı tarafından silmemesi için yaratıyoruz .


Gönderilen tuşları görmek için ekleme modunda ^ v kullanmak akıllıca bir numara! Ben de belgeleme bulmakta zorlandım, ama bir PC (ve fare) eksikliği. Dokunmatik ekranlı bir tekerleği simüle etmeye çalışıyorum. Acaba yatay kaydırma tekerleğinin tuşlarını da keşfettiniz mi? Onlardan 66/67 olmasını bekledim (yukarı / aşağı için 64/65'ten sonra) ve 6/7 düğme numaraları olması gerekiyordu, ancak çalışmıyor gibi görünüyor. Teşekkürler!
hyperpallium

2

OS X'te MacVim kullanıyorsanız, bu bir izleme dörtgeni ile çalışır:

set mouse=n " enable mouse in normal mode
set nowrap  " disable line wrapping (so there's something to scroll to)

OP'nin durumunun farklı olduğunu biliyorum, ancak bu bazı kullanıcılar için geçerli bir cevap.
David Lord
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.