Fandom

Vim Tips Wiki

Invoke a function with a count prefix

Redirected from VimTip787

1,624pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Tip 787 Printable Monobook Previous Next

created 2004 · complexity intermediate · author Luc St-Louis · version 5.7


Suppose you have a function requiring a count argument, and you would like to be able to invoke it with a mapping, and also allow the count to be prefixed to the mapping, like you can with for example {count}CTRL-^ (to edit the [count]th file in the buffer list).

Here is an example of code that can be used to call a Foo() function with such a prefix count argument. All it shows is the structure required for such a thing to work (well, it's the best the author of the tip was able to come up with). Given the following, typing 42,a will echo FOO: 42:

function! Foo(count)
  echo 'FOO: ' . a:count
endfunction

command! -nargs=1 FooCmd call Foo(<args>)
map ,a :<C-U>FooCmd(v:count)<CR>

ReferencesEdit

CommentsEdit

It's simpler if you use ":call", then you don't need to use "command". I have something like the following in my vimrc.

   nmap ,a :<C-U>call Foo(v:count)
[...]
   function Foo(amount)
      execute "set columns +=" . a:amount
   endfunction

Also on Fandom

Random Wiki