Bagaimana saya bisa memiliki bentuk kursor yang berbeda saat menjalankan vim di dalam tmux di bawah cygwin?
TANPA menyesuaikan garis-garis ini akan cukup untuk mencapai apa yang saya inginkan:
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
Tapi entah bagaimana tmux saya mematahkannya - kursor memiliki bentuk blok tidak peduli apa pun mode vim saya.
Spesifikasi saya:
- Windows 7 x64
- Cygwin x86
- TMUX 1.9a
- Vim 7.4.726 (dikompilasi dengan + cursorshape)
- terminal emulator: mintty 1.1.3
- digunakan dalam Terminal Cygwin atau Cmder (baik cara, bentuk kursor hanya berfungsi tanpa TMUX)
echo $TERM
memberi sayascreen-256color
(dalam TMUX dan di luarnya, karena saya milikiexport TERM=screen-256color
di saya.bashrc
.tmux.conf
mengandung:
set -g default-terminal "screen-256color" setw -g xterm-keys on
Apa yang saya coba sudah tidak berhasil:
export TERM=xterm
export TERM=vt100
- "klik kanan pada bar> Opsi> Tampak> Kursor" (ini mengubah kursor secara permanen, mode vim masih tidak mengubahnya)
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"
danlet &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"
?xterm-256color
di dalam tmuxscreen-256color
. tmux memiliki versi 1.9 (dan Anda 1.9a). Saya telah meluncurkan vim di dalam tmuxvim -u NULL
(-u NULL berarti tanpa konfigurasi). Bentuk kursor adalah blok dalam mode apa pun, tetapi ketika saya menetapkant_SI
dant_EI
membentuk, beralih dari blok (mode normal) keI
(mode insert) seperti yang diharapkan. Bisakah Anda mencoba meluncurkan vim dengan .vimrc kosong, tanpa skema warna dan plugin?Jawaban:
Tampaknya masalahnya adalah tmux tidak mengirim kode pelarian kursor Anda ke emulator terminal. Anda perlu membungkus kode pelarian yang Anda inginkan dalam urutan khusus yang memberitahu tmux bahwa kode itu harus meneruskannya ke terminal luar.
Urutan yang Anda butuhkan untuk membungkus urutan pelarian Anda adalah
\<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Sumber ). Ini...
adalah urutan pelarian Anda.Jadi, coba lakukan sesuatu seperti ini di
.vimrc
:Saya tidak menggunakan terminal emulator atau cygwin Anda, jadi saya tidak bisa menguji kode ini. Tetapi metode ini bekerja untuk saya (saya hanya membungkus kode pelarian lain yang sesuai dengan terminal saya).
sumber
.bashrc
. Terima kasih.Nilai
$TERM
variabel lingkungan yang benar sangat penting. Pastikan berbedascreen-256color
. Tetapkan kexterm-256color
misalnya.sumber