Cmd-r neden Vim'i mac'ta bozuyor? Aslında ne yapmaya çalışıyor?


19

Ben bir web geliştiricisi olduğum için sürekli olarak karşılaşıyorum, 'cmd-r' ok tuşlarının herhangi bir modda çalışmasını engelleme yan etkisine sahiptir, ancak bunun amaç olduğunu hayal edemiyorum ve bulamadım gerçekte ne yapması gerektiğine dair herhangi bir belge.

Düzenleme: Görünüşe göre bu aslında bir Mac terminali komutu, 'Reset Reset', bu yüzden şimdi bu "Send reset komutu hangi amaca hizmet ediyor?" Neden vim belgelerinde bulamadığımı açıklıyor.

Yanıtlar:


16

Bu sıkıntıdan kaçınmak için, iTerm anahtar eşlemesinde Command-R'yi "Yoksay" olarak yeniden eşleştiriyorum.

resim açıklamasını buraya girin


Teşekkür ederim. Bu çok sinir bozucu oluyordu.
ThinkingInBits

10

Ekranı kullanmadığımda bile bu başıma geliyor ve terminal çalışan vim'i temizleyerek normale dönebileceğimi buldum (bunu tmux ile de test ettim ama ekran değil:

:!clear

6

Bu soru burada cevaplanmıştır: OSX'te ekran çalıştırırken, command + r tüm ekranlarda vim'de yukarı ok tuşlarını karıştırır

Kopyalanan cevap:

İyi bir küçük Vim avukatı olarak, hjkl'yi imleç tuşlarınız olarak kullanmayı öğrenmenizi söylemek zorundayım. Sorunu keşfederken, gerçek ok tuşları yerine hjkl kullanarak test ettiğimi fark edene kadar, gizemli bir şekilde kendini düzelttiğini düşündüm.

Her neyse, şimdi gerçek bir cevap için.

Tüm ekranlarınızı kapatmak ve yeniden başlatmak yerine, ekranın terminaller arasında hareket etme özelliğinden yararlanabilirsiniz. Ekranı terminalinizden ayırmak için CTRL + A CTRL + D tuşlarına basın, ardından yeniden takmak için -D -R ekranını çalıştırın. Bu, ok tuşlarının tekrar çalışmasını sağlamalıdır.

Ekranda değil, sadece Vim'de iseniz, CTRL + Z tuşlarına basabilir ve aynı efekt için fg yazabilirsiniz.

Vim'deki imleç tuşu sorununu da çözebilirsiniz, ancak sıfırlama diğer terminal seçeneklerini değiştirmiş olabilir, bu nedenle diğer rastgele ekran / klavye sorunlarını görmeniz için yukarıda açıklandığı gibi yapmak daha güvenlidir. Yine de remappings istiyorsanız, işte bunlar:

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

Pis ayrıntılar:

Hem Vim hem de ekran, terminali yönetmek için ncurses kütüphanesini kullanır. VT100 uyumlu bir terminalin kontrolünü ele geçirdiğinde ncurses'ın yaptığı şeylerden biri, ok tuşlarını yaydığı kodları değiştiren "uygulama moduna" geçirmektir. Örneğin yukarı ok tuşu Esc [A'dan Esc OA'ya değişir. Bunu yapmak için yaydığı VT100 kontrol kodu Esc [? 1 sa. Command + R tarafından gönderilen terminal sıfırlama komutu, imleç tuşlarını varsayılana sıfırlar.

Ekranın sökülmesi ve yeniden takılması ncurses'ın terminalin kontrolünü tekrar ele geçirmesine neden olur, bu da sevdiği tüm ayarları yeniden uygular, bu nedenle işleri normale döndürmenin en taşınabilir ve güvenilir yolu budur.

VT100 kontrol kodları: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm


Evet, gönderdikten sonra "Command + R tarafından gönderilen terminal sıfırlama komutunun imleç tuşlarını varsayılana sıfırladığını" gördü, bunun neden olduğunu tam olarak bilmek harika olurdu. Dürüst olmak gerekirse, çoğunlukla bu komutun kullanım amacının ne olduğunu bilmekte ilginçim, ki bu cevap vermiyor.
GlyphGryph
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.