DEV Community

Waylon Walker
Waylon Walker

Posted on • Originally published at waylonwalker.com

 

Vim remaps use cmd in place of :

Anyone just starting out their vim customization journey is bound to run into this error.

E5520: <Cmd> mapping must end with <CR>
Enter fullscreen mode Exit fullscreen mode

I did not get it

I'll admit, in hindsight it's very clear what this is trying to tell me, but for whatever reason I still did not understand it and I just used a : everywhere.

From the docs

If you run :h <cmd> you will see a lot of reasons why you should do it, from performance, to hygene, to ergonomics. You will also see another clear statement about how to use <cmd>.

                                                          E5520
  <Cmd> commands must terminate, that is, they must be followed by <CR> in the
  {rhs} of the mapping definition.  Command-line mode is never entered.
Enter fullscreen mode Exit fullscreen mode

When to map with a :

You still need to map your remaps with a : if you do not close it with a
<cr>. This might be something like prefilling a command with a search term.

nnoremap <leader><leader>f :s/search/
Enter fullscreen mode Exit fullscreen mode

Otherwise use

If you can close the <cmd> with a <cr> the command do so. Your map will automatically be silent, more ergonomic, performant, and all that good stuff.

nnoremap <leader><leader>f <cmd>s/search/Search/g<cr>
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

Join us at DEV
Yes, this is technically an “ad”, but really we just want to ask if you want to join DEV. We have 900k+ developers reading, posting, and enjoying community, and would love to have you.   Create an account and continue your coding journey.