2009-11-24 34 views
6

Vim'de :wq'e bastığımda :w'i girmeye çalışırken neredeyse her zaman bir kaza meydana geldi. Xzx16'yı devre dışı bırakmak istiyorum.Vim'de yerleşik komut nasıl devre dışı bırakılır

Bulduğum en yakın cmap, ama bazı tuhaf davranışları var. Eğer

:cmap wq w 

gibi bir şey yaparsam :wq'i bile giremiyorum; Komut modunda wq - w tuş dizisini yeniden başlatır. Şimdi, örneğin wq içeren bir dizede bir arama/değiştirme komutu giremiyorum.

Sadece :wq komutunu :w ya da no-op ile eşlemek isterim. Bunu yapmanın bir yolu var mı?

EDIT: :cmap neden

için bir seçenek olmadığını açıkladı

cevap

0

iyi seçenek sadece :cmap davranışa alışmaya gibi görünüyor. Nadir durumlarda ben girişine sadece wq vurabilir klavye diziliminde wq istiyorum, sonra, bir saniye bekleyin tekrar q çarptı. this possible solution'u buldum ama zevklerim için çok karmaşık.

2

için bir seçenek değildir neden daha iyi bir çözüm olabilir:

:cabbrev wq w 

Ama hariç olarak cmap çalışmıyor neden emin değilim. Aslında dosyaları kaydetmek için biri benim fonksiyon tuşları eşlenen etmişti:

:map <F2> :w<CR> 
:nmap <F2> <ESC>:w<CR>i 

GÜNCELLEME: İlk komuta düzeltilmiştir yazım hatası.

Update2: Olası geçici çözüm:

:cabbrev wq<CR> w 

HTH

+0

sen açıklayabilir misiniz: cabbrew? –

+2

Bence: cabbrev olmalı. ': cabbrev wq w', alana bastıktan ya da girdikten sonra wq 'yi wq olarak değiştirecektir, böylece': wq' '' 'w'' yapacaktır. Daha fazla bilgi için ': help: cabbrev' ve': help: ab'. – DrAl

+0

Üzgünüz, sanırım soruma yeterince açık değildim. Bunu yaparsanız: CMAP ve aynı zamanda görünüyor: cabbrew, bu komut modunda "wq" tuş dizisi "wq" dışında bir eşleştirilmiş anlamına gelir. Yani, örneğin, "wq" içeren bir dizgede arama/değiştirme yapamazsınız. Tüm yapmak istediğim, tam komutu girersem bunu yapmaktır: wq, "w" veya no-op'a takılır. – user85509

İlgili konular