Bagaimana agar vim bekerja dengan tmux dengan benar?


19

Saya mencoba mencari cara untuk mendapatkan vimdan tmuxbermain bersama.

Masalah saya adalah: Ketika saya menggunakan xterm-256colorsaya mulai vimbekerja dengan baik, tetapi latar belakang tidak membuat dengan benar.

Saya memperbaikinya dengan menggunakan screen-256color. Ini terlihat bagus tetapi istirahat Ctrl + arrow keys(mereka masuk dalam mode insert dan menghapus 4 baris). Saya ingin menggunakan pemetaan ini sebagai gantinya untuk beralih tab vim.

Bagaimana saya membuatnya bekerja?

Jawaban:


8

Jalankan di catdalam tmuxdan tekan tombol yang dimaksud untuk mengetahui kode melarikan diri yang mereka hasilkan. Bagi saya ini memberi ^[[Ddan ^[[C. Kemudian hanya memetakan kode melarikan diri secara langsung.

nnoremap ^[[D gT
nnoremap ^[[C gt

di mana itu ^[adalah karakter pelarian, yang dapat Anda sisipkan dengan menekan <CTRL-v><ESC>vim.


Itu tidak mengubah perilaku vim saya.
— mengakali

Apa yang tercetak saat Anda memulai cat dalam tmux dan menekan tombol?
— Mika Fischer

^ [[1; 5C dan ^ [[1; 5D. Ide bagus, saya tidak tahu bagaimana mendapatkannya. Baru saja mencobanya. Berhasil! Terima kasih.
— mengakali

Bagus. Saya mengedit jawaban saya untuk memasukkan metode untuk mendapatkan kode pelarian yang tepat.
— Mika Fischer

22

Ada beberapa level konfigurasi yang perlu diatur dengan benar untuk fungsionalitas terbaik.

  1. Konfigurasikan tmux untuk mengenali urutan. Sebelum meluncurkan tmux , tetapkan nilai TERM yang sesuai untuk emulator terminal Anda (mis xterm-256color.). Masuknya Database terminfo diidentifikasi oleh variabel lingkungan TERM memberitahu tmux bagaimana mengenali urutan untuk dimodifikasi tombol panah (kemampuan yang ditetapkan pengguna { kUP, kDN, kRIT, kLFT} {, 3.. 7}).
  2. Konfigurasikan tmux untuk menghasilkan urutan. Atur xterm-keysopsi sesi onsehingga tmux akan menghasilkan urutan gaya xterm sendiri ketika menerima urutan yang diidentifikasi oleh TERM. Di Anda ~/.tmux.conf:

    set-option -g xterm-keys on
    
  3. Konfigurasikan program yang berjalan di dalam tmux untuk menggunakan / mengharapkan sebagian besar urutannya. Pastikan Anda menggunakan screenTERM di dalam tmux (mis screen-256color.). Ini memberitahu program-program yang berjalan di dalam tmux bagaimana mengontrol emulasi terminal (kembali) tmux dan respons apa yang harus mereka harapkan dari tmux .
  4. Sayangnya, screenentri basis data berbasisinfo sering tidak menentukan urutan apa pun untuk tombol panah yang dimodifikasi (yaitu mereka mungkin tidak memiliki kUP, dan lain-lain), sehingga program yang berjalan di dalam tmux mungkin tidak tahu untuk mengharapkan urutan seperti itu. Anda harus mengkonfigurasi secara manual semua program yang ingin Anda kenali kunci-kunci ini. Di Vim , Anda bisa memasukkan ini ke ~/.vimrc:

    if &term =~ '^screen'
        " tmux will send xterm-style keys when xterm-keys is on
        execute "set <xUp>=\e[1;*A"
        execute "set <xDown>=\e[1;*B"
        execute "set <xRight>=\e[1;*C"
        execute "set <xLeft>=\e[1;*D"
    endif
    

    Anda mungkin ingin menggunakan varian tanpa x(yaitu <Up>bukannya <xUp>, dan lain-lain) jika Anda menemukan bahwa menggunakan x-variant menyebabkan tombol panah normal berhenti bekerja.

    Keuntungan dari mendefinisikan tombol-tombol seperti ini adalah Anda tidak harus memetakan setiap kombinasi pengubah secara terpisah (Shift, Control, Contol + Shift, Meta, Meta + Shift, Meta + Control, Meta + Control + Shift); yang *mendapat interpretasi khusus untuk menangani semua urutan terkait (lihat :help xterm-modifier-keys).

  5. Kemudian Anda dapat memetakan kunci alih-alih urutan yang dikodekan keras:

    nnoremap <C-Right> gt
    nnoremap <C-Left> gT
    

1
Hei, ini bekerja dengan sempurna!
— Pablo Olmos de Aguilera C.

2

Seperti yang dijelaskan di sini , nonaktifkan Background Color Erase (BCE) dengan menghapus t_utopsi terminal (jalankan :set t_ut=di Vim dan kemudian tekan Control+ Luntuk menyegarkan tampilan terminal) sehingga skema warna berfungsi dengan baik ketika Vim digunakan di dalam tmux dan layar GNU.

Dengan cara ini, Anda dapat mempertahankan TERMnilai Anda xterm-256coloruntuk deteksi kunci yang tepat sambil mendapatkan rendering skema warna Vim yang tepat juga! :-)


1

Apakah pengaturan set t_Co=256di ~ / .vimrc Anda membantu sama sekali? Ini hanya pengaturan warna tetapi dapat membantu mengatasi beberapa masalah.

Anda dapat memetakan kembali ctrl+Arrowkunci di ~ / .vimrc Anda juga ...

Sunting: apakah Anda mencoba ctrl+Arrowdalam sesi layar GNU? Saya pikir ini mungkin masalah Anda.


terlihat dan berfungsi dengan baik di layar dengan xterm-256color
— mengakali

set t_Co = 256 dilakukan juga
— mengakali

Apakah ada yang membantu?
— Sardathrion

Sayangnya tidak ada. Apa maksud Anda dengan remapign ctrl + panah? Saya menggunakannya sudah memetakan kembali untuk beralih tab di vim.
— mengakali

dipetakan seperti ini: map <C-Right> gt
— outsmartin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.