トラックパッドを使用して水平スクロールするにはどうすればよいですか?


10

トラックパッドのスクロールがVim、慣性などすべてで機能することに気づきました。これを水平に動作するように変更したいので、右矢印キーを長時間押す代わりに、上下にスクロールしてカーソルを左右に移動できます。

スクロールを左/右の動きにどのようにマッピングできますか?


2
付記:同じ移動キーを続けて数回以上押していると、おそらく間違っている(使用するwWeE$)}など)。矢印キーを使用している場合は、間違いなく Vimを間違って使用している。
ドアノブ2015

回答:


4

よると、:help scroll-mouse-wheelあなたはWin32のGUIを使用している場合、答えはノーです。

一方、X11 GUIまたはマウスをサポートするコンソールvimを使用すると、ホイールはキーの押下を送信して、再マッピングできます。

だから、あなたはあなたが記述した行動を得ることができます

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

nmap通常モードでのマッピングに使用していることに注意してください。

他のモードで同様の動作を得るには、通常のキーの代わりに方向にマップできます。例:挿入モードの移動:

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

これらをデフォルトにするには、vimrcの下部に貼り付けます。


OPはOSXを使用しているので、Win32もX11も(おそらく)使用していないと思います。
セス

1
OSXに対する答えはありますか?
bsmith89 2015

残念ながら、vimのドキュメントにはOSXについての記述がなく、試してみるのに便利なOSXマシンもありません。:-(
ジョンO'M。

1
ああ、私はこれについて言及するべきでした-私はOS Xを実行していますが、ほとんどの場合、UbuntuサーバーにSSHで接続しています。
元に戻す

朗報です!sshの反対側のvimがスクロールイベントに応答する場合、ターミナルエミュレータがスクロールイベントを送信しており、ローカルで実行されているvimとリモートで実行されているvimの両方で上記の回答が機能します。端末エミュレーターの名前でコメントした場合は、回答に追加します。
ジョンO'M。

4

私はハマースプーン とマッピングの賢い使い方でそれを行う方法を見つけました。

最初の部分は、水平方向にスクロールするようにShift+ ScrollUpShift+ ScrollDownを構成することです。そのために、次のコードスニペットをに入れました.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>ターミナルなどにもキーとして送信されるため、使用する必要があることに注意してください。これに関するドキュメントは見つかりませんでした(挿入モードでスクロール中にCtrl+ Vを使用してこれを理解しました )。

その後、水平スクロールをShift+垂直スクロールに再マッピングする必要があります。これを行うには、次のスニペットをHammerspoonのinit.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

scrollBindキーストロークウォッチャーがLuaのガベージコレクターによって消去されないように、変数を作成します。


これは賢いトリックです。挿入モードで^ vを使用して、送信されたキーを確認します。ドキュメントも見つけられませんでしたが、PC(およびホイールマウス)がありません。タッチスクリーンでホイールをシミュレートしようとしています。たまたま横スクロールホイールのキーを発見したかな。私はそれらが66/67(アップ/ダウンの64/65の後)であると予想し、それらはボタン番号6/7であることが意図されていますが、機能していないようです。ありがとう!
ハイパーパリウム2018

2

OS XでMacVimを使用している場合、これはトラックパッドで機能します。

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

OPの状況が異なることは承知していますが、これは一部のユーザーにとって有効な回答です。
David Lord
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.