ไม่สามารถปรับขนาดเสียงเรียกเข้าใน tmux ได้


47

tmuxทุกอย่างจะทำงานนอกที่ดีของ แต่ในtmuxฉันไม่สามารถปรับขนาดเสียงเรียกเข้าได้ด้วยเมาส์ ฉันมีset mouse=aใน. vimrc ของฉัน มีวิธีแก้ปัญหาสำหรับเรื่องนี้หรือไม่?

.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 นี่เป็นปัญหาที่ทราบ / ไม่ได้รับการแก้ไข แน่นอนว่าถ้าคุณวางเม้าส์ลงบนคีย์บอร์ดก็จะกลายเป็นเรื่องที่ไม่มีปัญหา
romainl

11
คุณได้ลองยังการตั้งค่าttymouse=xterm2ในกลุ่ม ? ที่ให้ฉันลากไปรอบ ๆ เป็นกลุ่ม Vimภายในtmux (ดูเหมือนว่าจะเริ่มต้นxterm2เมื่อทำงานด้วยTERM=xtermซึ่งอาจเป็นกรณีที่อยู่นอกtmux )
Chris Johnsen

@ChrisJohnsen ใช้งานได้ !! กรุณาโพสต์ความคิดเห็นนี้เป็นคำตอบและฉันจะยอมรับมัน :)
Holms

@ ฉีดสวัสดี! การปรับขนาดหน้าต่างด้วยการเชื่อมโยงคีย์ vim เริ่มต้นนั้นค่อนข้างยุ่งยาก IMHO xD
trusktr

นี่ไม่ใช่ปัญหา
โป๊ว

คำตอบ:


69

ดูเหมือนว่าการลากสายสถานะเพื่อปรับขนาดการแบ่งเป็นไปไม่ได้เมื่อตัวเลือกเป็นกลุ่มttymouseคือxterm; มันจะทำงานเมื่อค่าเป็นxterm2แม้ว่า ค่าหลังกำหนดค่า Vim เพื่อขอโหมดการรายงานเมาส์แบบขยายที่ (เหนือสิ่งอื่นใด) ให้การสนับสนุนการลากที่ดีขึ้น โหมดขยายนี้ใช้งานได้เฉพาะกับxtermเวอร์ชั่นใหม่(และเทอร์มินัลอีมูเลเตอร์อื่น ๆ รวมถึงtmux ) ดังนั้นจึงไม่ใช่ค่าเริ่มต้น

คุณสามารถใช้สิ่งต่อไปนี้ใน.vimrcการตั้งค่าตัวเลือก:

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

(แม้ว่าฉันไม่แน่ใจว่าสิ่งนี้จะส่งผลกระทบต่ออินสแตนซ์ของหน้าจอจริงซึ่งใช้คำที่ขึ้นต้นด้วยscreen)

เมื่อคุณอยู่นอกtmuxตัวแปรสภาวะแวดล้อม TERM อาจเป็นxtermค่า -ish และVimจะโพรบสำหรับเวอร์ชันxtermโดยใช้t_RVลำดับการควบคุม


3
คุณพูดถึงไม่ทราบว่าสิ่งนี้จะส่งผลกระทบต่อหน้าจอ (ตรงข้ามกับtmux ) คำตอบคือ: หน้าจอมีปัญหาเดียวกันและการแก้ไขที่แน่นอนนี้ก็ทำงานได้เช่นกัน
Moss Collum

1
เงื่อนไขไม่เป็นจริงใน Tmux ของฉัน แต่เพียงsetการทำงานของตัวแปร
jasonszhao

1
หากคุณทำงานในเทอร์มินัลที่มีคอลัมน์มากกว่า 223 คอลัมน์คุณจะต้องตั้งค่าttymouseให้sgrเป็นxterm2ไม่มากไปกว่านั้น คุณสามารถตรวจสอบว่าเป็นกลุ่มสนับสนุนของคุณด้วยsgr has("mouse_sgr")ควรตั้งค่าความปลอดภัยsgrแทนการใช้xterm2เพราะเข้ากันได้ย้อนหลังเสมอ ดู:help ttymouse
Sudo Bash

14

ในกรณีของฉันมันแก้ปัญหาทั้งสองกรณี: การแยกขนาดของเมาส์และปัญหาตำแหน่งเมาส์สำหรับหน้าจอกว้าง

การแก้ไขคือ:

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

สิ่งนี้ใช้ได้สำหรับฉัน
พอล Brannan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.