At the beginning of your vimrc (before your mappings), you should add:
set nocompatible
It will change many behaviours inside vim (see help), and will certainly solve your problem.
Here is a similar question on SuperUser.
Edit:
If this solution works, however it means that the compatible
option has not been automatically unset by
Vim, which however should happen in most cases (see :h compatible-default
).
It probably means that you're not using a user vimrc configuration file, like ~/.vimrc
. In this
case, Vim would unset the compatible
option automatically. So a better solution would be to put
your configuration in such a file (see :h .vimrc
for other possible names that Vim will be able
to detect).
nnoremap
instead ofmap
?<esc>
to work you can tryinoremap jj ^[
where^[
is inserted by pressing<ctrl-v><Esc>
(Also I wrote a question which may help you How to debug a mapping? )