16

Is there a way to run these scripts from the : commandline with a few keystrokes?

Over the last couple of months, I've built a series of files full of vim-commands to auto-generate boilerplate code for my projects. It's allowed me to work faster.

However, the only way I know how to run these scripts is by assigning them to key-combinations in ~/.vimrc. There's only so many keys I can remap.

Is there a way to run these scripts from the : commandline with a few keystrokes?

For example, I have a unit_test_cpp.vim script, which builds a boilerplate unit test cpp file. I'd like to be able to type

:utc

or some other simple combination of letters with a simple mnemonic to run this script on my currently open file.

4 Answers 4

31

Open Vim and enter the following:

:source /path/to/vim/file/name.vim

If you are currently editing that file, you can also type:

:w <ENTER>
:source % <ENTER>

The percent sign (%) means the path to the currently opened file.

Sign up to request clarification or add additional context in comments.

Comments

10

You could use the command feature of vim. In your unit_test_cpp.vim file you would add something like this:

command Utc call CreateUnitTests()

Now when you type :Utc it will call your function. The only limitation is that your command must start with an uppercase letter.

Comments

5

Script or function? If it is a function, try

:call FunctionName() 

3 Comments

They are files with vim commands. I can run them with the so command.
Each of the so commands is wrapped by a function in .vimrc. So could I use the :call FunctionName() method to run those functions from .vimrc?
basically. if you had function! Foo() source 'foo.vim' endfunction you could could :call Foo() and it should source foo.vim, or you can map the command as rq suggests below to avoid the :call...
0
:run file.vim

:run is like :source, but :run doesn't need the path. It searches the runtimepath.

A Linux runtimepath:

$HOME/.vim,
$VIM/vimfiles,
$VIMRUNTIME,
$VIM/vimfiles/after,
$HOME/.vim/after

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.