İlk olarak map
ve noremap
her birinin normal, görsel, seçim ve operatör bekleyen modları için eş zamanlı eşlemeler oluşturması benzerdir . Vim bu konuda ayrıntılar veriyor :help map-overview
:
Overview of which map command works in which mode. More details below.
COMMANDS MODES ~
:map :noremap :unmap Normal, Visual, Select, Operator-pending
:nmap :nnoremap :nunmap Normal
:vmap :vnoremap :vunmap Visual and Select
:smap :snoremap :sunmap Select
:xmap :xnoremap :xunmap Visual
:omap :onoremap :ounmap Operator-pending
:map! :noremap! :unmap! Insert and Command-line
:imap :inoremap :iunmap Insert
:lmap :lnoremap :lunmap Insert, Command-line, Lang-Arg
:cmap :cnoremap :cunmap Command-line
Yukarıdaki yardıma göre, eşlemeyi belirli bir modla kısıtlamak istiyorsanız, şunu eklemeniz gerekir:
'n' (normal için), 'v' (görsel ve seçim için), 'c' (komut için), 'x' (görsel mod için), 's' (seçim için), 'o' (operatör beklemede) ).
Örneğin,
nmap n nzz
normal bir mod oluşturur, özyinelemeli eşleme n
.
Şimdi, noremap
sadece özyinelemeli bir sürümü map
.
Peki, özyinelemesiz haritalama nedir? Vim de bunun cevabına sahiptir :help map-recursive
:
If you include the {lhs} in the {rhs} you have a recursive mapping. When
{lhs} is typed, it will be replaced with {rhs}. When the {lhs} which is
included in {rhs} is encountered it will be replaced with {rhs}, and so on.
This makes it possible to repeat a command an infinite number of times. The
only problem is that the only way to stop this is by causing an error. The
macros to solve a maze uses this, look there for an example. There is one
exception: If the {rhs} starts with {lhs}, the first character is not mapped
again (this is Vi compatible).
For example: >
:map ab abcd
will execute the "a" command and insert "bcd" in the text. The "ab" in the
{rhs} will not be mapped again.
Bunun bir örneği aşağıdakileri eşlemektir:
:imap j k
:imap k j
Şimdi, vim j'yi k ve k ile sonsuz sayıda j ile değiştirecek ve bu nedenle size yinelemeli eşleme oluşturduğunuzda bir hata gösterecektir.
Bu nedenle, genellikle her zaman ( <Plug>
eşlemeleriniz veya benzerleriniz hariç ) özyinelemesiz eşlemeler kullanmanız önerilir. Bu, yanlışlıkla yinelemeli eşlemeler oluşturduğunuzda Vim'in asılı kalmasını önler. Özyinelemesiz eşleme, bu nedenle Vim'deki komutları eşlemenin daha güvenli bir yoludur.
Yukarıdaki bilgilerle, bunun :noreabbrev
sadece :abbrev
komutun özyinelemeli olmayan bir versiyonu olduğunu görebiliriz .
Sen kullanabilirsiniz :abbrev
, sadece ekleme değiştirin ve komut modları. :abbrev
kısaltmalar oluşturmak için kullanılır (Vim'in genişletebileceği kısayollar olarak da bilinir). Kısa genişleme :map
/ :noremap
eşlemeleri oluşturmak, :abbrev
/ :noreabbrev
kısaltmalar oluşturmak veya Vim'in yazınızı genişletmesini istediğiniz zaman kullanmaktır.