Không thể thay đổi kích thước chia tách vim bên trong tmux


47

Tất cả mọi thứ đang hoạt động tốt bên ngoài tmux. Nhưng trong tmuxtôi không thể thay đổi kích thước chia tách vim bằng chuột. Tôi có set mouse=atrong .vimrc của tôi. đó có phải là cách giải quyết?

.tmux.conf:

$ cat ~/.tmux.conf
set-option -g mode-mouse on
set-option -g mouse-resize-pane on
set-option -g mouse-select-pane on
set-option -g mouse-select-window on

AFAIK đây là một vấn đề đã biết / chưa được giải quyết. Tất nhiên, nếu bạn thả con chuột của bạn để ủng hộ bàn phím của bạn, điều này trở thành một vấn đề không phải là vấn đề.
romainl

11
Bạn đã thử cài đặt ttymouse=xterm2trong Vim chưa? Điều đó cho phép tôi kéo xung quanh các phần tách Vim bên trong tmux (có vẻ như mặc định xterm2khi chạy với TERM=xterm, có lẽ là trường hợp bên ngoài tmux ).
Chris Johnsen

@ChrisJohnsen nó hoạt động !! xin vui lòng gửi bình luận này như một câu trả lời và tôi sẽ chấp nhận nó :)
holms

@romainl Xin chào! Thay đổi kích thước cửa sổ với các ràng buộc khóa vim mặc định là IMHO khá cồng kềnh. xD
trusktr

Đây không phải là một vấn đề khó khăn
jasonszhao

Câu trả lời:


69

Dường như việc kéo dòng trạng thái để thay đổi kích thước phân tách là không thể khi tùy chọn Vimttymousexterm; Nó không hoạt động khi giá trị là xterm2mặc dù. Giá trị sau cấu hình Vim để yêu cầu chế độ báo cáo chuột mở rộng mà (trong số những thứ khác) cung cấp hỗ trợ kéo tốt hơn. Chế độ mở rộng này chỉ hoạt động với các phiên bản mới hơn của xterm (và các trình giả lập thiết bị đầu cuối tương thích khác, bao gồm tmux ), vì vậy nó không phải là giá trị mặc định.

Bạn có thể sử dụng một cái gì đó như sau trong .vimrcđể đặt tùy chọn:

set mouse+=a
if &term =~ '^screen'
    " tmux knows the extended mouse mode
    set ttymouse=xterm2
endif

(Mặc dù, tôi không chắc điều này sẽ ảnh hưởng đến các trường hợp màn hình thực tế như thế nào , cũng sử dụng TATE bắt đầu bằng screen.)

Khi bạn ở ngoài tmux , biến môi trường TERM có thể là xtermgiá trị -ish và Vim sẽ thăm dò phiên bản xterm bằng cách sử dụng t_RVchuỗi điều khiển.


3
Bạn đề cập đến việc không biết làm thế nào điều này sẽ ảnh hưởng đến màn hình (trái ngược với tmux ). Câu trả lời là: màn hình có cùng một vấn đề và cách khắc phục chính xác này cũng hoạt động ở đó.
Moss Collum

1
điều kiện không trở thành đúng trong Tmux của tôi, mà chỉ đơn giản là setting biến hoạt động.
jasonszhao

1
Nếu bạn làm việc trong một nhà ga trong đó có hơn 223 cột, bạn sẽ cần phải thiết lập ttymouseđể sgrnhư xterm2không đi xa hơn. Bạn có thể kiểm tra nếu vim của bạn hỗ trợ sgrvới has("mouse_sgr"). Nó phải luôn luôn an toàn để đặt sgrthay xterm2vì vì nó tương thích ngược. Xem:help ttymouse
Sudo Bash

14

Trong trường hợp của tôi, nó đã giải quyết cả hai trường hợp: thay đổi kích thước phân chia chuột và vấn đề vị trí chuột cho màn hình rộng.

Cách khắc phục là:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end

Điều này làm việc cho tôi.
Paul Brannan
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.