I am quite new to using vim so please forgive me if this has been asked else where. I have tried Googling but am not really sure what to search for.
In my vimrc I have the follwing function that will search for (<.>)
, delete it and enter insert mode:
function! NextMark()
execute "normal! /(<.>)\<cr>da("
execute "startinsert"
endfunction
This works as expected and I have the following mapping so that pressing double space in insert mode will run the function:
inoremap <space><space> <Esc>:call NextMark()<cr>
This works so I don't believe the problem is with the function.
When I create a new HTML file (and in the future this will be extended for other files), I would like to read in a template file and run the above function. Below is what I have so far but for some reason it isn't working:
augroup new_html
autocmd!
autocmd BufNew *.html execute "read ~/Templates/html"
autocmd BufNew *.html execute "normal! ggdd"
autocmd BufNew *.html execute NextMark()
augroup END
This partly works, it reads my file and deletes the first (empty) line. For some reason though, it doesn't take me to the first (<.>)
although it does put me into insert mode so I think the function is being run. For some reason, it isn't doing the search.
Thanks in advance for any help
Edit I have just noticed that the first marker is being deleted, I am just being put in insert mode in the wrong place.
Do the autocmd
s I specify get run one after the other? It is a bit like the second and third are being run at the same time.
Edit 2: Thank you @Naumann and @Tumbler41 for your suggestions. I now have a seperate function that reads in my template, deletes the first line then calls NextMark. Here s the function:
function! NewHtml()
read ~/Templates/html
execute "normal! ggdd"
call NextMark()
endfunction
and here is my revised autocmd block:
augroup new_html
autocmd!
autocmd BufNew *.html call NewHtml()
augroup END
I am still being left with the first mark deleted but in inset mode at the begining of the document.
Any more suggestions?
Edit 3
I have just added BufNewFile
to the autocmd so that it will work if i run vim newFile.html
from the command line. This works. If, however, I already have vim open and I run :e newFile.html
, it almost works but my cursor is at the begining of the file, not at the point of my first mark.