urbainvaes/vim-remembrall

For forgetful vim users

Vim Script

129

51 commits

updated Sep 10, 2021

See the code

README

Remembrall

This is a small plugin that makes it easier to remember mappings.

Installation

Using vim-plug:

Plug 'urbainvaes/vim-remembrall'

Usage

To scroll down and up the list, use <c-e>, <c-y>, or (pagewise) <c-f> and <c-b>. Adding support for a prefix can be achieved via mappings in your .vimrc:

" Show ',' normal mode mappings when ',' is pressed.
nnoremap <silent> <expr> , Remembrall(',')

" Show ',' normal mode mappings when the key combination ',?' is pressed,
" so we don't have to wait for the timeout.
nnoremap <silent> <expr> ,? Remembrall(',')

" Show visual mode mappings.
vnoremap <silent> <expr> ? Remembrall('v', '')

Remembrall defines a mapping for the all the prefixes in the list g:remembrall_normal_keys, which defaults to c, d, g, y, ], [, >, <, =, <Leader> and <LocalLeader>. A list of suffixes, which will be appended to the left-hand side in the definition of the mappings, can be defined with g:remembrall_suffixes. For example, if this list is set to ["?"], then the plugin will append the character ? in the left-hand side of all the mappings it defines. The relevant part of the plugin code should make this clear:

for suffix in s:suffixes
  for key in s:normal_keys
    silent execute "nnoremap <silent> <expr>" key.suffix "Remembrall('".key."')"
  endfor
endfor

To avoid the timeout between a key press and the moment Remembrall opens, the argument <nowait> can be used in the definition of the corresponding mapping. The following mapping, for example, will force Remembrall to open directly when the default vimtex prefix, <LocalLeader>l, is pressed in a tex buffer:

augroup remembrall
    autocmd FileType tex nnoremap <buffer> <nowait> <expr> <LocalLeader>l Remembrall(',l')
augroup END

Customization

ConfigDefaultDescription
g:remembrall_normal_keysSee aboveKeys for which to enable Remembrall
g:remembrall_suffixes[""]List of suffixes
g:remembrall_windowtopleft 30newCommand for creating Remembrall window
g:remembrall_zoom\<c-z>Key to toggle zoom
g:remembrall_search1Enable search using /
g:remembrall_auto_accept1Automically accept unique match
g:remembrall_accept\<c-m>Key to accept a mapping when auto-accept is disabled

Acknowledgements

Some parts of the source code were inspired by vim-peekaboo. I thank Raimond Willemsen for reporting bugs and suggesting improvements.

License

MIT

vim

Contributors

urbainvaes

50 commits

Languages

Vim Script

100.0%

urbainvaes/vim-remembrall

For forgetful vim users

Vim Script

129

51 commits

updated Sep 10, 2021

See the code

README

Remembrall

This is a small plugin that makes it easier to remember mappings.

Installation

Using vim-plug:

Plug 'urbainvaes/vim-remembrall'

Usage

To scroll down and up the list, use <c-e>, <c-y>, or (pagewise) <c-f> and <c-b>. Adding support for a prefix can be achieved via mappings in your .vimrc:

" Show ',' normal mode mappings when ',' is pressed.
nnoremap <silent> <expr> , Remembrall(',')

" Show ',' normal mode mappings when the key combination ',?' is pressed,
" so we don't have to wait for the timeout.
nnoremap <silent> <expr> ,? Remembrall(',')

" Show visual mode mappings.
vnoremap <silent> <expr> ? Remembrall('v', '')

Remembrall defines a mapping for the all the prefixes in the list g:remembrall_normal_keys, which defaults to c, d, g, y, ], [, >, <, =, <Leader> and <LocalLeader>. A list of suffixes, which will be appended to the left-hand side in the definition of the mappings, can be defined with g:remembrall_suffixes. For example, if this list is set to ["?"], then the plugin will append the character ? in the left-hand side of all the mappings it defines. The relevant part of the plugin code should make this clear:

for suffix in s:suffixes
  for key in s:normal_keys
    silent execute "nnoremap <silent> <expr>" key.suffix "Remembrall('".key."')"
  endfor
endfor

To avoid the timeout between a key press and the moment Remembrall opens, the argument <nowait> can be used in the definition of the corresponding mapping. The following mapping, for example, will force Remembrall to open directly when the default vimtex prefix, <LocalLeader>l, is pressed in a tex buffer:

augroup remembrall
    autocmd FileType tex nnoremap <buffer> <nowait> <expr> <LocalLeader>l Remembrall(',l')
augroup END

Customization

ConfigDefaultDescription
g:remembrall_normal_keysSee aboveKeys for which to enable Remembrall
g:remembrall_suffixes[""]List of suffixes
g:remembrall_windowtopleft 30newCommand for creating Remembrall window
g:remembrall_zoom\<c-z>Key to toggle zoom
g:remembrall_search1Enable search using /
g:remembrall_auto_accept1Automically accept unique match
g:remembrall_accept\<c-m>Key to accept a mapping when auto-accept is disabled

Acknowledgements

Some parts of the source code were inspired by vim-peekaboo. I thank Raimond Willemsen for reporting bugs and suggesting improvements.

License

MIT

vim

Contributors

urbainvaes

50 commits

Languages

Vim Script

100.0%