Perintah-perintah ini mengubah satu set penekanan tombol ke yang lain dalam beberapa cara, tapi saya agak kabur di mana yang paling tepat untuk beberapa situasi. Selain itu, ada !
varian mereka juga. Saat ini, penggunaan saya terhadap mereka cukup serampangan, jadi bisakah saya tahu apa jebakan yang terkait dengan masing-masing? Dalam catatan khusus tentang berbagai versi mode dapat berguna, karena saya belajar dari Peter Rincker dalam komentar yang cmap
dapat berkembang cukup banyak di mana saja di baris dan tidak hanya ketika saya menggunakan :
perintah. Peringatan apa yang bisa saya ambil terhadap jebakan potensial?
19
Jawaban:
Pertama,
map
dannoremap
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
: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-rekursifmap
.Jadi apa itu pemetaan non-rekursif? Vim memiliki jawaban untuk itu juga, dengan
:help map-recursive
: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.sumber
nore
bentuk - bentuk perintah peta. Alasan lain (dan menurut saya, yang lebih penting) untuk menggunakannya adalah membuat pemetaan Anda dapat diandalkan / dapat diprediksi. Jika Anda menggunakan formulir biasa danrhs
berisi kunci yang kebetulan dipetakan ke sesuatu yang lain, maka pemetaan Anda bisa memiliki perilaku yang sama sekali berbeda dari yang dimaksudkan.