Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to execute a normal mode command in a vim function?

I am writing a vim function to insert some text in a c++ file, please see the following function:

function! InsertDebugInfo()                                                                      
     let i = line('.')                                                               
     call append(i+1, '#ifdef DEBUG')                                                
     call append(i+2, 'std::cout << ""  << std::endl;')                              
     call append(i+3, '#endif')                                                      
     call append(i+4, '')                                                            
     call cursor(i+3, 0)                                                             
endfunction    

In normal mode, I use == to re-indent one code line. My question is how to call == in the above function. Furthermore, how to execute the command such as 2f" which move the cursor to the second ".

like image 656
Huayi Wei Avatar asked Jul 14 '16 02:07

Huayi Wei


2 Answers

To indent, you can just use

normal ==

To find also you can use

normal 2f"

or even shorter

norm <whatever you do in normal mode>

Now you might be getting what I'm trying to say.
If not, read documentation :h normal.

like image 174
sudo bangbang Avatar answered Sep 28 '22 05:09

sudo bangbang


Try this in your function:

execute 'normal 2f"'
like image 24
imbichie Avatar answered Sep 28 '22 07:09

imbichie