2009-12-05 13 views
5

Vim'de bir komut satırı sırasını komut satırı iletişimine (Ex modunda :'dan sonra girilen bir komut) eşlemek için bir yol var mı?Komut satırı komutlarına bir dizi tuş vuruşunu eşleme

+1

Tabii! Ne yapmaya çalıştığınıza dair bir örnek verebilir misiniz yoksa sadece genel olarak mı soruyorsunuz? – Rook

+0

Sadece genel olarak, birçok kez tekrar tekrar aynı şeyi yapıyorum ama diğer yandan, onun için bir anahtar bağlama oluşturmak istemiyorum (Ben kullanıyorum başka bir Emacs istemiyorum) tüm komutlarım için değiştirici tuşları) – Opt

cevap

7

Evet, ve bu sezgisel denir: Haritanın

Örnek: ekleme modunda Eğer foo vim "bar" ile yanıt verecektir tuşlarına

:map foo :echo "bar"<CR> 

yok. Daha fazla bilgi için, vim içine :help :map yazın. Varsayılan olarak yüklemek istediğiniz eşleştirmeleri .vimrc dosyanıza yerleştirebilirsiniz.

Tuş vuruşlarını, ekleme modu (: imap) ve görsel mod (: vmap) gibi farklı modlar için bağımsız olarak eşleyebilirsiniz.

Güncelleme

komut modu için bir takma ad kullanmak isteyen (ama bu çok ekleme modu için yapılabilir) varsa, isteyeceksiniz: (noremap) da vim remapping konusunda yardımcı Bkz kısaltmaları'u kullanmak için.

Komut modu için bir kısaltma tanımlamak için, aşağıdakileri kullanın: ca (cabbrev için kısayol olan). Vim help :help :ca ve daha fazla bilgi için :help :abbreviations'a bakın.

Haritadan farklı olarak, kısaltmaların yerine vim komutları değil, harflerle yazılır. Kısaca basıldığında veya girdiğinizde kısaltmalar tetiklenir.

Örnekler:

" let me type :syn=cpp instead of :set syntax=cpp 
" 
:ca syn set syntax 

" fix my favorite spelling error 
" 
:abbr teh the 

" this does something different than the :map example above 
" 
:iabb foo :echo "bar"<CR> 

" this is ugly, misusing an abbreviation as :map by simulating ESCAPE press 
" 
:iabb hello <ESC>:echo "world"<CR> 
+0

Bu, belirli şeyleri daha can sıkıcı hale getiriyor - örneğin, fo girmek istiyorum, o zaman fo'nun bir alt dizesi olduğu için bu komut dizisinin yürütülmesi için bir süre beklemek zorundayım. Komut satırı komutlarını (komut isteminden sonra girilen komutlar) bir dizi tuşa eşlemek için bir yol var mı? – Opt

+0

Yanıtımı yanıt olarak güncelledim – catchmeifyoutry