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.