수평 스크롤에 트랙 패드를 사용하려면 어떻게해야합니까?


10

방금 트랙 패드 스크롤이 Vim, 관성 등에서 작동한다는 것을 알았습니다. 가로로 작동하도록 이것을 변경하고 싶습니다. 그래서 커서를 오른쪽 화살표 키를 누르지 않고 왼쪽과 오른쪽으로 움직 이도록 커서를 위아래로 움직일 수 있습니다.

스크롤을 왼쪽 / 오른쪽 움직임에 어떻게 매핑 할 수 있습니까?


2
참고 : 같은 이동 키를 연속해서 몇 번 이상 누르면, 잘못 사용하고 있거나 (사용 wWeE$)}등) 화살표 키를 사용하는 경우 확실히 Vim을 사용하는 것입니다.
Doorknob

답변:


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

아아, vim 문서에는 OSX가 언급되어 있지 않으며 OSX 컴퓨터를 사용해 볼 수 없습니다. :-(
John O'M.

1
아, 나는 이것을 언급했을 것입니다-나는 OS X를 실행하고 있지만 대부분의 경우 우분투 서버에 SSH로 연결됩니다.
실행 취소

좋은 소식입니다! ssh의 다른 쪽 끝에있는 vim이 스크롤 이벤트에 응답하면 터미널 에뮬레이터가 스크롤 이벤트를 보내고 있으며 위의 대답은 로컬로 vim을 실행하고 vim을 원격으로 실행하는 것입니다. 터미널 에뮬레이터의 이름을 언급하면 ​​답변에 추가합니다.
John O'M.

4

나는 Hammerspoon 과 영리한 매핑 사용법 으로 그것을 할 수있는 방법을 알아 냈습니다 .

첫 번째 부분은 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 's에 배치합니다.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이어야하지만 작동하지 않는 것 같습니다. 감사!
hyperpallium

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.