Wie kann ich mein Trackpad für horizontales Scrollen verwenden?

10

Ich habe gerade bemerkt, dass meine Trackpad-Schriftrolle in Vim, Trägheit und allem funktioniert. Ich möchte dies so ändern, dass es horizontal funktioniert. Ich kann also nach oben und unten scrollen, um den Cursor nach links und rechts zu bewegen, anstatt die rechte Pfeiltaste für längere Zeit gedrückt zu halten.

Wie kann ich mein Scrollen der Links- / Rechtsbewegung zuordnen?

Rückgängig machen
quelle
2
Nebenbemerkung: Wenn Sie dieselbe Bewegungstaste mehr als ein paar Mal hintereinander drücken, machen Sie es wahrscheinlich falsch (verwenden wWeE$)}usw.), und wenn Sie Pfeiltasten verwenden, verwenden Sie Vim definitiv falsch.
Türknauf

Antworten:

4

Laut :help scroll-mouse-wheelder Antwort ist nein, wenn Sie die Win32-GUI verwenden.

Auf der anderen Seite sendet das Rad bei Verwendung der X11-Benutzeroberfläche oder von Console Vim mit Mausunterstützung Tastendrücke, die Sie neu zuordnen können.

Sie könnten also das Verhalten erhalten, mit dem Sie beschreiben

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

Beachten Sie, dass ich nmapfür die Zuordnung im normalen Modus verwende.

Um in anderen Modi ein ähnliches Verhalten zu erzielen, können Sie anstelle der normalen Taste die Richtung zuordnen. ZB für die Bewegung im Einfügemodus:

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

Um diese Standardeinstellungen festzulegen, kleben Sie sie unten in Ihr vimrc.

John O'M.
quelle
Ich glaube, das OP verwendet OSX, also weder Win32 noch X11 (höchstwahrscheinlich).
Seth
1
Gibt es eine Antwort für OSX?
bsmith89
Leider wird in der vim-Dokumentation OSX nicht erwähnt, und ich habe keinen OSX-Computer zur Hand, auf dem ich es ausprobieren kann. :-(
John O'M.
1
Ah, ich hätte das erwähnen sollen - ich verwende OS X, aber SSHing auf einem Ubuntu-Server die meiste Zeit.
Rückgängig machen
Das sind gute Neuigkeiten! Wenn das vim am anderen Ende des ssh auf die Bildlaufereignisse reagiert, sendet Ihr Terminalemulator die Bildlaufereignisse durch und die obige Antwort sollte für Sie funktionieren, sowohl lokal ausgeführtes vim als auch remote ausgeführtes vim. Wenn Sie den Namen Ihres Terminalemulators kommentieren, füge ich ihn der Antwort hinzu.
John O'M.
4

Ich habe einen Weg gefunden, dies mit Hammerspoon und der cleveren Verwendung von Mapping zu tun .

Der erste Teil konfiguriert Shift+ ScrollUpund Shift+ so ScrollDown, dass sie horizontal scrollen. Dazu haben Sie das folgende Code-Snippet in Ihr Verzeichnis eingefügt .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>

Beachten Sie, dass wir <S-2-ScrollWheelUp>und dergleichen verwenden müssen, da sie auch als Schlüssel an das Terminal gesendet werden. Ich habe keine Dokumentation dazu gefunden (ich habe dies mit Ctrl+ herausgefunden, Vwährend ich im Einfügemodus gescrollt habe).

Danach müssen wir horizontale Schriftrollen Shift+ vertikalen Schriftrollen neu zuordnen . Dazu platzieren wir den folgenden Ausschnitt in Hammerspoon'sinit.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

Wir erstellen die scrollBindVariable nur, damit der Tastendruck-Watcher nicht vom Garbage Collector der Lua gelöscht wird.

thalesmello
quelle
Das ist ein cleverer Trick, um ^ v im Einfügemodus zu verwenden, um die gesendeten Schlüssel zu sehen! Ich hatte auch Probleme, Dokumentation zu finden, aber es fehlt mir ein PC (und eine Radmaus). Ich versuche ein Rad mit einem Touchscreen zu simulieren. Ich frage mich, ob Sie zufällig auch die Tasten für das horizontale Scrollrad entdeckt haben. Ich habe erwartet, dass sie 66/67 sind (nach 64/65 für Auf / Ab), und sie sollen die Tasten 6/7 sein, aber es scheint nicht zu funktionieren. Vielen Dank!
Hyperpallium
2

Wenn Sie MacVim unter OS X verwenden, funktioniert dies mit einem Trackpad:

set mouse=n " enable mouse in normal mode
set nowrap  " disable line wrapping (so there's something to scroll to)
David Lord
quelle
Ich bin mir bewusst, dass die Situation von OP anders ist, aber dies ist eine gültige Antwort für einige Benutzer.
David Lord