Vi'de A, B, C, D görüntülenen ok tuşlarını düzeltin (vim içinde değil)


16

Vim'de ekleyebileceğimi biliyorum

set nocompatible

içinde .vimrcok tuşları kaçınmak için, A, B, C, ekleme modunda D gösterir.

Ama vi Sürüm 4.0 (gritter) 12/25/06 kullanıyorum .

Aynı davranışı nasıl edinebilirim?

== DÜZENLE == (1)

Aşağıdaki komutla bu CVS deposundan (son işlem 24 Şubat 2007) oluşturulan Arch Linux'un vi sürümünü kullanıyorum :

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

ve bu üç düzeltme ekiyle : fix-tubeize-short-overflow.patch , navkeys.patch ve preserve-dir.patch .

== DÜZENLE (2) ==

Sorunlar LXTerminal 0.2.0 , Termit 10-1 , Tilda 1.2.4-1 , Terminatör 0.98-1 ve xterm 320-2'de ortaya çıkar, ancak urxvt v9.21'de veya Linux sanal konsollarında olmaz.

== DÜZENLE (3) ==

Göre Tek Unix Şartname sol ok sırasıyla aşağıdaki capname karşılık yukarı ok, sağ ok, aşağı-ok: kcub1, kcud1, kcuf1ve kcuu1. Bu başlıklardan gelen xtermve rxvt-unicode-256colorbu termterler için terminfo girişlerinin karşılaştırılması şunları sağlar:

$ 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'.

İkame edilmesinin tarafından girişi terminfo'ya xterm değiştirme '\EOD', '\EOB', '\EOC', '\EOA' tarafından '\E[D', '\E[B', '\E[C', '\E[A'sorunu çözmek ama iyi bir fikirdir gerekir? Belki diğer programları ok tuşlarının kullanımını kıracak?


2
Bunun vi (m) <-> terminal etkileşiminden kaynaklandığını düşünüyorum, bu yüzden terminalle ilgili bazı geçici çözümleri / yapılandırmayı da deneyebilirsiniz.
VanLaser

1
@VanLaser yukarıda söylediklerini Tercüme: akım için giriş TERMbölgesi termcapveya terminfoveritabanları klavye tarafından üretilen kodları ile tutmadığında. Çözüm, değiştirmemek değil , klavyenizle bağlantılı TERMolup olmadığını veya klavyenin yaydığı anahtar kodlarını bulmak ve ilgili veritabanını buna göre düzeltmektir. Sisadmin'e şikayet etmek de işe yarayabilir. vitermcapterminfo
Sato Katsura

1
Bütün bunları söyledim mi? Bazen kendimi hayrete düşürüyorum :) (elbette, tek bildiğim terminalle ilgili olduğuydu).
VanLaser

1
Bu vi sürümü ncurses ile oluşturulmuştur, daha sonra kullanmalıdır terminfo.
Ortomala Lokni

2
Bu ipuçlarını gördün mü ? Belki de bir şeyler faydalı olabilir.
Boris Serebrov

Yanıtlar:


2

$TERMDeğişkeninizi ayarlayan bir takma ad oluşturabilirsiniz

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

Kabuğunuzun rc dosyasına ekleyin ve başlattığınız her terminal için tanımlanmalıdır.


Sistemimde bu sadece Vi bırakma ekleme modunu yapacak (muhtemelen çöp yazdırmaktan daha iyidir, ancak yine de sorunu çözmez).
Martin Tournoij

1

Bazen bu tür davranışlar, olağandışı tuş eşlemeleri kurulumundan kaynaklanabilir .vimrc- örneğin, iki ESCtuşa basmayı eşleşen bir şeyiniz varsa :

nmap <Esc><Esc> some_command_sequence

Sonra ok tuşları ile vim arızalanmasına yol açabilir.


OP tarafından açıklanan konfigürasyon oldukça spesifiktir ve böyle bir eşleştirme yapılmadan davranışı gösterir. (Test ettim.)
Zengin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.