Yanıtlar:
remapeşlemelerin tekrar tekrar çalışmasını sağlayan bir seçenektir . Varsayılan olarak açıktır ve bu şekilde bırakmanızı tavsiye ederim. Geri kalanlar aşağıda açıklanan eşleme komutlarıdır :
:mapve :noremapolan özyinelemeli ve özyinesiz çeşitli haritalama komutların sürümleri. Bunun anlamı şudur:
:map j gg
:map Q j
:noremap W j
jile eşlenecek gg. Qaynı zamanda eşlenecektir gg, çünkü jözyinelemeli eşleme için genişletilecektir. Weşlenir j(ve değil ggçünkü) jözyinesiz haritalama genişletilmiş edilmeyecektir.
Şimdi Vim'in kalıcı bir editör olduğunu unutmayın . Bu bir var , normal mod, görsel modu ve diğer modları.
Bu eşleme kümelerinin her biri için, normal, görsel, seçim ve operatör modlarında ( ve ), biri normal modda ( ve ), biri görsel modda ( ve ) çalışan bir eşleme vardır .:map:noremap:nmap:nnoremap:vmap:vnoremap
Bununla ilgili daha fazla yardım için bkz:
:help :map
:help :noremap
:help recursive_mapping
:help :map-modes
noremapbazı zıt olduğu varsayım vardı map. Bir haritayı kaldıran bir şey demek istiyorum. Cevap için teşekkürler. Beni açıkladı
:mapvb iş yok hepsi , modları tam olarak, sadece tüm yaygın olanları (özellikle, normal mod, görsel mod seçeneğini modu ve operatör beklemede). Bir eşlemenin insert, komut satırı veya lang-arg modunda çalışmasını istiyorsanız :map!vb. Kullanmanız gerekir . (Kaynak: vimdoc.sourceforge.net/htmldoc/map.html#map-overview )
Bence Vim belgeleri bu komutların isimlendirilmesinin ardındaki anlamı açıklamalıydı. Sadece ne yaptıklarını söylemek isimleri hatırlamanıza yardımcı olmaz.
maptüm özyinelemeli eşleme komutlarının "kökü" dür. Kök formu "normal", "görsel + seçim" ve "operatör beklemede" modlarına uygulanır. ( Dilbilimdeki gibi "kök" terimini kullanıyorum .)
noremaptüm özyinelemesiz eşleme komutlarının "kökü" dür. Kök formu, aynı modlar için geçerlidir map. ( nore"Özyinelemesiz" anlamına gelen öneki düşünün .)
( Ekleme ve komut satırı için de !böyle modların map!geçerli olduğunu unutmayın.)
Bu bağlamda "özyinelemeli" ne anlama geldiğini görmek için aşağıya bakın.
Eşlemenin nçalıştığı modları değiştirmek gibi bir mod harfi eklemek . Uygulanabilir modlar listesinin bir alt kümesini seçebilir (örneğin yalnızca "görsel") veya mapuygulanamayan diğer modları seçebilir (örneğin "ekle").
Kullanım help map-modessize eşlemenin hangi modlara uygulanacağını açıklayan birkaç tablo gösterecektir.
Mod harfleri:
n: sadece normalv: görsel ve seço: operatör bekliyorx: sadece görsels: sadece seçi: eklec: Komut satırıl: insert, komut satırı, regexp-search (ve diğerleri. Toplu olarak "Lang-Arg" sözde modu olarak adlandırılır)" Özyinelemeli ", eşlemenin bir sonuca genişletildiği, ardından sonucun başka bir sonuca genişletildiği anlamına gelir.
Bunlardan biri doğru olduğunda genişleme durur:
Bu noktada, Vim'in nihai sonucun varsayılan "anlamı" uygulanır / yürütülür.
" Özyinelemesiz ", eşlemenin yalnızca bir kez genişletildiği ve bu sonucun uygulandığı / yürütüldüğü anlamına gelir.
Misal:
nmap K H
nnoremap H G
nnoremap G gg
Yukarıdaki K, genişlemeye H, sonra Hgenişlemeye Gve durmaya neden olur . Hemen nnoremapgenişleyen ve durduğu için durur. Anlamı Gidam edilecektir (yani "son satıra atlamak"). En fazla bir özyinelemeli olmayan eşleme, bir genişleme zincirine uygulanacaktır (gerçekleşecek son genişleme olacaktır).
Haritalanması Giçin ggtuşuna eğer geçerlidir Gama sen basarsanız, K. Bu eşleme, yinelemeli olarak eşlenip eşlenmediğinden Kbağımsız olarak preslemeyi etkilemez G, çünkü genişlemenin Kdurmasına neden olan 2. satır olduğundan, 3. satır kullanılmaz.
maptüm modlar için değil, yalnızca normal, görsel, seçim ve operatör bekleyen modlar için geçerlidir.
Bir fark şudur:
:map etmez nvo== Normal + (+ görsel seçmek) + operatör bekleyen:map!does ic + komut satırı modunda eki ==help map-modestablolarda belirtildiği gibi .
Yani: maptüm modlarla eşleşmez .
Tüm modlara eşlemek için hem :mapve 'ye ihtiyacınız vardır :map!.
command modebaşka tarihi adıdır normal mode. bölüm 5 vimdoc.sourceforge.net/htmldoc/intro.html#vim-modes-intro ). 'C' kısaltması 'komut satırı' içindir. Başka bir deyişle, varsayılan olarak: insert + komut satırı modları için lhs'yi rhs ile map! lhs rhs özyinelemeli olarak eşler . Bu, varsayılan seçenek ~ / .vimrc ile açıkça devre dışı bırakılmadığı sürece geçerlidir . Bu durumda eşleme yinelemeli olmaz (önerilmez). remapset noremap[!]
vnoremapvevmapVisual AND Select modunda çalışın. Sadece Görsel modunda, kullanımda bir eşleme sahip olmakxmapvexnoremap.