Vim Tips Wiki

Fast one session mapping

Redirected from VimTip1127

1,623pages on
this wiki
Add New Page
Add New Page Talk0
Tip 1127 Printable Monobook Previous Next

created February 10, 2006 · complexity basic · author Marc Weber · version 5.7

" A little nice idea I got today...
" I've noticed that I often use one session mappings .. Sometimes :bn
" sometimes :make specialtarget
" in each case I need it often.
" vim supports this by @: but there are cases when I want to press one key only
" and other cases I want to user other commands as well.
" Having to type :map <F5> :<cmd><CR> does need some time and I'm lazy ;-)
" So just copy this text, put it into .vim/plugins/mapFromF1ToF12.vim and enjoy
" Try
" :echo "dummy"<CR>
" <F5>
" now you can use F5 to execute :echo "dummy"
" Perhaps you want to have mappings local to your buffer only.
" Then use map <buffer> and unmap <buffer> instead

function MapLastCommandToKeys(keysToMapTo)
  exe "unmap ".a:keysToMapTo
  exe "map ".a:keysToMapTo." :".histget("cmd")."<CR>"

function PrepareMap(keysToMapTo)
  exe "map ".a:keysToMapTo." :call MapLastCommandToKeys('".a:keysToMapTo."')<CR>"

" This will allow you to use F1
" This while loop will allow you to use F2,F3,..,F12
let i=2
while i<13
  call PrepareMap('<F'.i.'>')
  let i=i+1
" of cause you can use any mapping eg \a:


Recordings can do much more (encompassing other modes) than handle :cmd-line executions. They can also be repeated. See :help complex-repeat.

From normal mode,

  1. To record to register a: 'qa'
  2. Perform any keystrokes and :cmd-line executions.
  3. To stop recording: 'q'
  4. To perform recording 2 times: '2@a'
  5. To perform recording 55 more times: '55@@'

Also on Fandom

Random Wiki