Tidak dapat mengubah ukuran vim di dalam tmux

47

Semuanya bekerja di luar denda tmux. Tetapi dalam tmuxsaya tidak dapat mengubah ukuran vim membagi dengan mouse. Saya miliki set mouse=adi .vimrc saya. Apakah ada solusi untuk ini?

.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
holms
sumber
AFAIK ini adalah masalah yang diketahui / tidak terselesaikan. Tentu saja, jika Anda menjatuhkan mouse Anda ke keyboard Anda, ini menjadi sangat tidak masalah.
romainl
11
Sudahkah Anda mencoba juga pengaturan ttymouse=xterm2di Vim ? Itu memungkinkan saya menyeret Vim membagi di dalam tmux (tampaknya default untuk xterm2ketika dijalankan dengan TERM=xterm, yang mungkin merupakan kasus di luar tmux ).
Chris Johnsen
@ ChrisJohnsen berhasil !! silahkan posting komentar ini sebagai jawaban dan aku akan menerimanya :)
Holms
@romainl Halo! Mengubah ukuran jendela dengan binding kunci vim standar adalah IMHO yang cukup rumit. xD
trusktr
Ini bukan masalah dempul
jasonzhao

Jawaban:

69

Tampaknya menyeret garis status untuk mengubah ukuran pemisahan tidak dimungkinkan ketika opsi Vimttymouse adalah xterm; itu bekerja ketika nilainya xterm2. Nilai yang terakhir mengonfigurasi Vim untuk meminta mode pelaporan mouse yang diperluas yang (antara lain) memberikan dukungan menyeret yang lebih baik. Mode lanjutan ini hanya berfungsi dengan versi xterm yang lebih baru (dan emulator terminal lain yang kompatibel, termasuk tmux ), jadi ini bukan nilai default.

Anda dapat menggunakan sesuatu seperti berikut ini di Anda .vimrcuntuk mengatur opsi:

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

(Meskipun, saya tidak yakin bagaimana ini akan mempengaruhi contoh layar yang sebenarnya , yang juga menggunakan TERM yang dimulai dengan screen.)

Ketika Anda berada di luar tmux , variabel lingkungan TERM mungkin merupakan xtermnilai -ish, dan Vim akan menyelidiki versi xterm dengan menggunakan t_RVurutan kontrol.

Chris Johnsen
sumber
3
Anda menyebutkan tidak tahu bagaimana ini akan mempengaruhi layar (sebagai lawan tmux ). Jawabannya adalah: layar memiliki masalah yang sama, dan perbaikan yang tepat ini juga berfungsi di sana.
Moss Collum
1
kondisi ini tidak menjadi benar di Tmux saya, tetapi hanya setting variabel berfungsi.
jasonzhao
1
Jika Anda bekerja di sebuah terminal yang memiliki lebih dari 223 kolom, Anda akan perlu set ttymouseuntuk sgrsebagai xterm2tidak lebih dari itu. Anda dapat memeriksa apakah mendukung vim Anda sgrdengan has("mouse_sgr"). Itu harus selalu aman untuk diatur sgrbukan xterm2karena itu kompatibel ke belakang. Lihat:help ttymouse
Sudo Bash
14

Dalam kasus saya itu menyelesaikan kedua kasus: ukuran mouse split dan masalah posisi mouse untuk layar lebar.

Cara mengatasinya adalah:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end
tojocky
sumber
Ini berhasil untuk saya.
Paul Brannan