Ok tuşları kendiliğinden vimde çalışmayı durdurur


25

Geçenlerde OS X 10.6'dan (sanırım) 10.9'a yükselttim. O zamandan beri öyle görünüyor ki, düzenleme yaparken vimok tuşları "kendiliğinden" çalışmayı bırakacak.

Bir noktada, hayal kırıklığı içinde ok tuşlarından birini "ezdi" ve sonunda "E388 bir tanım bulunamadı" hatası gösterildi. Diğer tüm deneyimlerim, oklar, bir süre çalıştım, aniden bana saldırmaya başladı!

Bırakma ve yeniden açma, sorunu geçici olarak çözer . Ancak, bunu önlemek istiyorum !

Bunun ne olabileceğini bilen var mı? Ve nasıl düzeltebilirim?


vimrcGüncelleme sırasında varsayılan ayarlarım değiştirilmiş gibi görünüyor . Hafızam doğruysa, daha önce oldukça büyük bir dosyaydı. Şimdi, sadece bu içeriyor:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

Bu seçeneklerin ne yaptığı hakkında hiçbir fikrim yok. Bunu inceleyeceğim - ama umarım burada birileri google okuduğumdan daha hızlı biliyordur ...


Ayrıca, bu sorunun daha uygun olabileceği Apple merkezli bir forum olduğunu da farkettim. Öyleyse, bu bir işletim sistemi X'in durumundan daha muhtemelse vim, belki bir mod bunu benim için geçirebilir.
svidgen

2
Bana kolejdeki bir "ana" ana bilgisayar üzerinde çalıştığımı hatırlatıyor. Profesör, asla ok tuşlarını kullanmaman gerektiğini öğretti vi. Her zaman hjkl kullanın. "Ok" tuşlarının eski donanımda kullanıldığı yer burasıdır.
Kırmızı Kriket

Tamam ... Ancak, ok tuşlarının çalışması gerekir. Profesörünüzün benim kullanmam gerektiğini düşündüğünden bağımsız olarak. Ve onları zaman zaman uygun buluyorum. Yani, çözümü görmek için sabırsızlanıyoruz.
svidgen

1
Anahtar değişmezini bir ara belleğe eklediğinizde ne olur? ekleme moduna gidin ve Ctrl + v tuşlarına ve ardından bir ok tuşuna basın. Mac'imdeki Vim, yukarı ok tuşunu ^[OAaşağı, yukarı ^[OB, sağ ^[OCve sola gösterir ^[OD. Sorunun kendisini ortaya
Nathan Wallace

@NathanWallace sorunuzu nasıl gözden kaçırdığımı bilmiyorum. Bunu bir sonraki Mac'imdeyken deneyeceğim.
svidgen

Yanıtlar:


24

James Hodgkinson'ın blogunda bulundu , aşağıdaki komut benim için çalışıyor. Vim ekranını yenileyeceğini unutmayın.

:!reset

Bu cevabı nasıl gözardı ettiğimden emin değilim, ama çok umut verici görünüyor!
svidgen

Aslında ... Makalede açıklandığı gibi Ctrl + R tuşlarına basmak, konuyu yukarıdaki Nathan'a verdiğim yanıtta belirtilen yanlış ok tuşu eşleşmeleriyle tam bir tutarlılıkla yeniden üretiyor. Ve reset komutu bu durumda çözer. Ve .. Sorunu başka bir şekilde güvenilir bir şekilde yeniden üretemiyorum, bu yüzden kesinlikle en faydalı cevap bu!
svidgen

11

Bu sorunla da birkaç kez karşılaştım. SSH aracılığıyla giriş yaptığım başka bir bilgisayarda GNU ekranını çalıştırıyordum. Sorunu çözmek için ekranlarımı ( Ctrl- a d) ayırdım, makineden çıktım, tekrar giriş yaptım ve kullanarak yeniden bağladım screen -x. Makineyi kapatmadan, sadece ekranı söküp yeniden takarak çalışabilir. Yine de hatırlayamıyorum.


Ekran oturumumu kapatıp yeniden başlatmak benim için düzeltti.
Eno

1
benim için sorun buydu. Her nasılsa screenbir funk halini aldı (ssh bağlantısı üzerinden). Bu terminali kapattıktan sonra tekrar ssh ve screen -rdhile yaptım. Teşekkürler!
Pierre D

@PierreD doğru, ben de birkaç kez zaten bu konuya girdim - aynı zamanda bir screenoturumda, Detach & Reattach sorunu çözdü, teşekkürler!
stdcerr

6

Dosyayı /usr/share/vim/buldum yolunda .vimrc... Ben çizgi ekledim

set term=ansi 

Benim için çalıştı. Şimdi ok tuşları Vim editöründe düzgün çalışıyor.


2
Bu benim için de düzeldi, çünkü en son Windows 10 WSL / Ubuntu güncellemesi bozuldu.
Gri Tilki

3

Bu konuya çok benziyor. Makale başlıklı: Vim'de İmleç Tuşları: Beni Çıldırtıyorsun! .

alıntı

Vim, birçok durumda, özellikle hızlı düzenlemeler (özellikle kök olarak) ve uzak sunucudaki dosyaları düzenlemek için kullanışlıdır. Dokuz ay boyunca bir Mac Book Pro ile yaşadığım sıkıntı Vim'deki imleç tuşları, zilleri satır değiştirmek yerine hem insert hem de komut modunda çalan imleç tuşlarıdır. MacPorts aracılığıyla sürüm 7'ye yükseltmek aynı sonuçları verdi. İmleç tuşları TERM'imi r2vt'dan VT220'ye değiştirdikten sonra çalıştı! Olumsuz sözdizimi vurgulayarak çalışmayı durdurdu.

Neyse ki, VT220’yi Google arama parametrelerime eklemek, Vim belgelerinde vt100-imleç-anahtarlarına referans verdi. Sorunu çözmek için .vimrc dosyanıza aşağıdaki kodu ekleyin:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

Aynı makalede $TERM, linuxyerine OSX’e ayar yapmanızın başka bir önerisi var .

alıntı

TERM değeri uzak sunucuda alınacağından TERM için varsayılan değeri linux veya dtterm olarak değiştirmek daha iyi bir çözümdür. Bu gün ve yaşta, çoğu sunucunun bu iki terminal türünü de desteklediğini iddia ediyorum.


Hmm ... Şimdi daha da kafam karıştı. Global / default .vimrcdosyalarım olduğunu sanıyordum . Bunlar bir OS X güncellemesi sırasında taşınmış mı yoksa kaldırılmış mı?
svidgen

@svidgen - Hayır Bunun değişeceğini sanmıyorum, ancak bu konu sizinkilere çok benziyordu ve düzeltme denemek için yeterince kolay, bu yüzden sizinle paylaşacağımı düşündüm. Bu arada, $TERMsenin üzerinde değişmiş olabilirdi.
slm

Whelp, bu kesinlikle buradaki en alakalı cevap. Bunun için +1. Sorunu sürekli olarak çözemediğimden emin değilim, çünkü maalesef, sürekli olarak sorunu çözemiyorum.
svidgen

Bu düzeltmeyi uyguladıktan sonra sorun yeniden ortaya çıktı. Yine ilgili bir cevap, + 1'den ayrılmak. Ancak, ek bir cevap sağlamakla ilgileniyorsanız lütfen yukarıdaki yorumuma bakın.
svidgen

0

Güncelleme için tebrikler. Haftasonu boyunca kendi güncellememi yaptım ve bazı tuhaf klavye sorunlarımla ilgileniyordum.

İşte yapmanız gerekenler:

  • Eski Logitech oyun yazılımını kaldırın ve yükseltin. Bunu yapmadan önce köşeli ve kaşlı ayraçlarımı kullanırken sorun yaşıyordum. Özel anahtarlar genellikle VIM bağlamında esc- [dizileri gönderir, bu nedenle bu alakalı olabilir.
  • Sistem Tercihlerine Girin: Güvenlik ve Gizlilik: Gizlilik: Erişilebilirlik ve birkaç uygulamayı etkinleştirin (synergy_server ve Logitech oyun yazılımı). Bu değişiklikten önce diğer bilgisayarlarımı sinerji ile kontrol edemedim ya da G11'imle makro kullanamadım. Bunun sizin için doğrudan bir bağlantı olduğundan şüpheliyim, ancak Erişilebilirlik seçenekleri yeni ve diğer bazı uygulamalarınız için geçerli olabilir.

0

Eğer içindeki .sqldosyalarda çalışıyorsanız vim(bahsetmiyorsunuz) bu size yardımcı olabilir. Geçen gün sadece bununla uğraştım.

Dosyada ~/.vimrc

let g:omni_sql_no_default_maps = 1

bu özel konu burada tartışılmaktadır

Bu sorunu .sqldosyalarınızda yaşamıyorsanız vim, özür dilerim, tek düşüncem vimsorun oluştuğunda içindeki eşleşmeyi doğrulamak olacaktır .

:map Ctrl V → okunu kullanma yeteneğini kaybettiğinde, bu komutu yap ve eşleştirmenin kaybolup kaybolmadığını gör. eğer öyleyse, bu size kazmaya başlamanız için bir yer sağlar.


0

Bir SSH oturumunda bu sorunu yaşadım ve oturumu tekrar kapatıp tekrar açarak çözdüm:

exit
ssh ...

Tartığınız için teşekkürler. Seçilen cevap sürekli benim için işe yaradı. Bunu denediniz mi?
svidgen

Evet, kabul edilen çözüm Ubuntu 18'de işe yaramadı. Hatta aynı ssh oturumunda vim'i bile kaldırdım ve yeniden yükledim ve zar yok. Yalnızca oturumu kapattıktan sonra tekrar geri yüklenen ok işlevine geri dönün.
duhaime

0

Ben ayarı, Windows'ta "sistem ortam değişkeni" kullanıldığında ben bu sorunu vardı TERMiçin xterm-256color. vimDeğişkeni tekrar silerken sorun çözüldü (ve benim normale döndü).

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.