Làm cách nào để sử dụng trackpad để cuộn ngang?


10

Tôi chỉ nhận thấy rằng cuộn trackpad của tôi hoạt động ở Vim, quán tính và tất cả. Tôi muốn thay đổi điều này để hoạt động theo chiều ngang - vì vậy tôi có thể cuộn lên xuống để làm cho con trỏ di chuyển sang trái và phải thay vì giữ phím mũi tên phải trong một khoảng thời gian lớn.

Làm cách nào tôi có thể ánh xạ di chuyển sang trái / phải?


2
Sidenote: nếu bạn nhấn cùng một phím di chuyển nhiều lần liên tiếp, có lẽ bạn đã làm sai (sử dụng, wWeE$)}v.v.) và nếu bạn đang sử dụng các phím mũi tên thì chắc chắn bạn đang sử dụng sai Vim.
Doorknob 4/2/2015

Câu trả lời:


4

Theo :help scroll-mouse-wheelcâu trả lời là không nếu bạn đang sử dụng GUI Win32.

Mặt khác, sử dụng X11 GUI hoặc console vim có hỗ trợ chuột, bánh xe sẽ gửi các phím bấm mà bạn có thể sắp xếp lại.

Vì vậy, bạn có thể có được hành vi mà bạn mô tả bằng

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

Lưu ý rằng tôi đang sử dụng nmapđể ánh xạ ở chế độ bình thường.

Để có hành vi tương tự trong các chế độ khác, bạn có thể ánh xạ theo hướng thay vì phím thông thường. Ví dụ: đối với chuyển động chế độ chèn:

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

Để làm cho các mặc định này, dán chúng ở dưới cùng của vimrc của bạn.


Tôi tin rằng OP đang sử dụng OSX, vì vậy cả Win32 và X11 (rất có thể).
Seth

1
Có câu trả lời cho OSX không?
bsmith89

Than ôi, tài liệu vim không đề cập đến OSX và tôi không có máy OSX để dùng thử. :-(
John O'M. 4/215

1
à, tôi nên đã đề cập đến điều này - Tôi đang chạy OS X, nhưng hầu hết thời gian SSH vào máy chủ Ubuntu.
Hoàn tác

Đó là tin tốt! Nếu vim ở đầu kia của ssh phản ứng với các sự kiện cuộn, thì trình giả lập thiết bị đầu cuối của bạn đang gửi các sự kiện cuộn qua và câu trả lời ở trên sẽ phù hợp với bạn, cả vim chạy cục bộ và vim chạy từ xa. Nếu bạn nhận xét với tên của trình giả lập thiết bị đầu cuối của bạn, tôi sẽ thêm nó vào câu trả lời.
John O'M.

4

Tôi đã tìm ra một cách để làm điều đó với Hammerspoon và cách sử dụng bản đồ thông minh.

Phần đầu tiên là cấu hình Shift+ ScrollUpShift+ ScrollDownđể cuộn theo chiều ngang. Để làm điều đó, bạn đã đặt đoạn mã sau vào .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>

Lưu ý rằng chúng ta phải sử dụng <S-2-ScrollWheelUp>và tương tự vì chúng cũng được gửi dưới dạng các khóa đến thiết bị đầu cuối. Tôi không tìm thấy tài liệu nào về điều này (tôi đã tìm ra điều này bằng cách sử dụng Ctrl+ Vtrong khi cuộn ở chế độ chèn).

Sau đó, chúng ta phải ánh xạ lại các cuộn ngang thành Shift+ cuộn dọc. Để làm như vậy, chúng tôi đặt đoạn mã sau vào 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

Chúng tôi tạo scrollBindbiến chỉ để trình theo dõi gõ phím không bị xóa bởi trình thu gom rác của Lua.


Đó là một mẹo thông minh, sử dụng ^ v trong chế độ chèn để xem các phím được gửi! Tôi cũng gặp khó khăn khi tìm tài liệu, nhưng thiếu PC (và chuột lăn). Tôi đang cố gắng mô phỏng một bánh xe với màn hình cảm ứng. Tôi tự hỏi nếu bạn tình cờ cũng phát hiện ra các phím cho bánh xe cuộn ngang. Tôi dự đoán chúng sẽ là 66/67 (sau 64/65 cho tăng / giảm) và chúng có nghĩa là số nút 6/7, nhưng dường như nó không hoạt động. Cảm ơn!
hyperpallium

2

Nếu bạn sử dụng MacVim trên OS X, điều này sẽ hoạt động với trackpad:

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

Tôi biết rằng tình hình của OP là khác nhau, nhưng đây là một câu trả lời hợp lệ cho một số người dùng.
David Lord
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.