I keep a sys.md file where I record a dated entry of every modification I make to my system (mostly installations of software, sometimes configuration changes) and based on an old Hacker News link about a did file I came up with the idea of an alias that would auto-insert the date and set me up with exactly the prompt I want for an entry to sys.md.

This command opens my sys.md file and inserts the date and the bottom:

nvim +'normal Go' +r!date' ~/notes/sys.md

I want to copy that line, paste it below, replace it with -'s as a markdown h2 heading, insert a new line and begin it with a dash-space -_ to start a bullet.



nvim +'normal Go' +'r!date' -c 'yypVr-o-_' ~/notes/sys.md

does not work. How can I auto-execute those commands?

  • 6
    You mean something like this: vim +'$pu_|r!date' +'norm yypVr-o-_' foo.txt? I think you are missing your :normal command. See :h :norm – Peter Rincker Aug 22 '18 at 21:59
  • @PeterRincker If you'd put that as an answer I'll accept it. It worked. – malan88 Aug 23 '18 at 12:46
  • @PeterRincker: what does the $pu_ do? – malan88 Aug 23 '18 at 14:01
  • I had to eliminate $pu_ from the command and reform it as nvim +'normal Go' +'r!date' +'yypVr-o-_' ~/notes/sys.md Because the BASH aliasing system didn't like your $pu_, but the +'norm <commands>' synax was what I was looking for anyway. Thank you! – malan88 Aug 23 '18 at 14:03
  • 1
    Using :put with the black hole register, "_, will create a blank line. Providing a range of $ will mean we put a blank line at the end of the file. See :h :range, :h quote_, and :h :put – Peter Rincker Aug 23 '18 at 14:09

yypVr-o-_ are not ex-commands, but normal. Use :normal to execute normal commands.

vim +'normal Go' +'r!date' +'yypVr-o-_' ~/notes/sys.md

For more help see:

:h -c
:h :r!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.