Memperbaiki tombol panah yang menampilkan A, B, C, D in vi (tidak dalam vim)


16

Saya tahu bahwa dalam vim saya dapat menambahkan

set nocompatible

in .vimrcuntuk menghindari tombol panah menampilkan A, B, C, D dalam mode insert

Tapi saya menggunakan vi Versi 4.0 (gritter) 12/25/06 .

Bagaimana saya bisa mendapatkan perilaku yang sama?

== EDIT == (1)

Saya menggunakan versi vi dari Arch Linux yang dibangun dari repositori CVS ini (komit terakhir 24 Februari 2007) dengan perintah berikut:

make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \
TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8"

dan dengan tiga tesis ini: fix-tubesize-short-overflow.patch , navkeys.patch dan preserve-dir.patch .

== EDIT (2) ==

Masalah terjadi di LXTerminal 0.2.0 , Rayap 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1 dan xterm 320-2 tetapi tidak di urxvt v9.21 atau di konsol virtual Linux.

== EDIT (3) ==

Menurut Spesifikasi Single Unix kiri-panah, turun-panah, kanan panah, up-panah sesuai dengan masing-masing capname berikut: kcub1, kcud1, kcuf1dan kcuu1. Membandingkan entri terminfo dari xtermdan rxvt-unicode-256coloruntuk capterms ini memberi:

$ infocmp xterm rxvt-unicode-256color | grep -E 'kcuf1|kcub1|kcud1|kcuu1'

kcub1: '\EOD', '\E[D'.
kcud1: '\EOB', '\E[B'.
kcuf1: '\EOC', '\E[C'.
kcuu1: '\EOA', '\E[A'.

Memodifikasi xterm terminfo entri dengan substituing '\EOD', '\EOB', '\EOC', '\EOA' oleh '\E[D', '\E[B', '\E[C', '\E[A'harus memecahkan masalah tetapi apakah itu ide yang baik? Mungkin itu akan merusak penggunaan tombol panah program lain?


2
Saya pikir ini disebabkan oleh vi (m) <-> interaksi terminal, jadi Anda juga dapat mencoba beberapa solusi / konfigurasi terkait terminal.
VanLaser

1
Terjemahan dari apa yang @VanLaser katakan di atas: entri Anda untuk saat ini TERMdi termcapatau terminfodatabase tidak selaras dengan kode yang dihasilkan oleh keyboard. Solusinya bukan mengubah TERM, tetapi untuk mengetahui apakah Anda viterhubung dengan termcapatau terminfo, temukan kode kunci yang dipancarkan oleh keyboard, dan perbaiki database yang sesuai. Mengeluh kepada sysadmin mungkin berhasil juga.
Sato Katsura

1
Apakah saya mengatakan semua itu? Kadang-kadang saya membuat diri saya kagum :) (tentu saja, yang saya tahu hanyalah itu terkait terminal)
VanLaser

1
Versi vi ini dibuat dengan ncurses, yang kemudian harus digunakan terminfo.
Ortomala Lokni

2
Apakah Anda melihat tips ini ? Mungkin sesuatu dari mereka bisa bermanfaat.
Boris Serebrov

Jawaban:


2

Anda bisa membuat alias yang mengatur $TERMvariabel Anda

alias vi='TERM=rxvt-unicode-256color vi'

Tambahkan itu ke file rc shell Anda dan itu harus ditentukan untuk setiap terminal yang Anda luncurkan.


Pada sistem saya ini hanya akan membuat Vi menyisipkan mode (yang mungkin lebih baik daripada mencetaknya sampah, tetapi masih tidak cukup memperbaiki masalah).
Martin Tournoij

1

Kadang-kadang perilaku seperti itu dapat dihasilkan dari pengaturan pemetaan kunci yang tidak biasa di Anda .vimrc- jadi misalnya jika Anda memiliki sesuatu yang memetakan dua ESCpenekanan tombol:

nmap <Esc><Esc> some_command_sequence

Maka itu dapat menyebabkan vim tidak berfungsi dengan tombol panah.


Konfigurasi yang dijelaskan oleh OP cukup spesifik, dan menampilkan perilaku tanpa pemetaan seperti itu ada. (Saya sudah mengujinya.)
Rich
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.