Pertama, map
dan noremap
serupa dalam hal masing-masing membuat pemetaan untuk mode normal, visual, pilih dan operator yang tertunda secara bersamaan . Vim merinci ini di :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
Sesuai bantuan di atas, jika Anda ingin membatasi pemetaan ke mode tertentu, Anda harus menambahkan:
'n' (untuk normal), 'v' (untuk visual dan pilih), 'c' (untuk perintah), 'x' (untuk mode visual), 's' (untuk pilih), 'o' (untuk operator yang tertunda ).
Contohnya,
nmap n nzz
akan membuat mode normal, pemetaan rekursif n
.
Sekarang, noremap
hanya versi non-rekursif map
.
Jadi apa itu pemetaan non-rekursif? Vim memiliki jawaban untuk itu juga, dengan :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.
Contohnya adalah pemetaan berikut ini:
:imap j k
:imap k j
Sekarang, vim akan mengganti j dengan k dan k dengan j berkali-kali, dan karenanya akan menunjukkan kepada Anda kesalahan bahwa Anda telah membuat pemetaan rekursif.
Inilah sebabnya mengapa umumnya disarankan agar Anda hampir selalu (kecuali ketika Anda memiliki <Plug>
pemetaan atau serupa) menggunakan pemetaan non-rekursif. Ini mencegah Vim menggantung ketika Anda secara tidak sengaja membuat pemetaan rekursif. Oleh karena itu pemetaan non-rekursif adalah cara yang lebih aman untuk memetakan perintah di Vim.
Dengan informasi di atas, kita dapat melihat bahwa :noreabbrev
itu hanyalah versi :abbrev
perintah non-rekursif .
Anda :abbrev
hanya dapat menggunakan mode insert, replace, dan command. :abbrev
digunakan untuk membuat singkatan, (alias pintasan yang dapat diperluas Vim). Perluasan singkat adalah menggunakan :map
/ :noremap
untuk membuat pemetaan, :abbrev
/ :noreabbrev
untuk membuat singkatan, atau setiap kali Anda ingin Vim memperluas pengetikan Anda.