Start vim with a datestamped filename?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Start vim with a datestamped filename?

George Skuse
Hi,

vim -c "silent edit filename.txt" starts vim with an unsaved file named filename.txt...  

I'd like to have the filename dynamically datestamped (yyyyMMdd_hhmmss), ie: filename-20170312_165737.txt

Does anyone know how this could be accomplished as part of the invocation using vim commands?  This needs to be crossplatform and not rely on OS-provided functionality.

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Start vim with a datestamped filename?

Tim Chase
On 2017-03-12 13:56, George Skuse wrote:
> I'd like to have the filename dynamically datestamped
> (yyyyMMdd_hhmmss), ie: filename-20170312_165737.txt
>
> Does anyone know how this could be accomplished as part of the
> invocation using vim commands?  This needs to be crossplatform and
> not rely on OS-provided functionality.

With *nix-specific, it's easy:

  vim filename-$(date +'%Y%m%d_%H%M%S').txt

However that doesn't work so well on Windows (at least those that
don't have bash & date). For Vim-specific, you could do

  vim -c "exec strftime('e filename-%Y%m%d_%H%M%S.txt')"

which Works For Me™ on Linux, FreeBSD, and Windows where I did a
quick test.

-tim



--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Start vim with a datestamped filename?

'Jürgen Krämer' via vim_use
In reply to this post by George Skuse
Am 12.03.2017 um 21:56 schrieb George Skuse:
> Hi,
>
> vim -c "silent edit filename.txt" starts vim with an unsaved file named filename.txt...
>
> I'd like to have the filename dynamically datestamped (yyyyMMdd_hhmmss), ie: filename-20170312_165737.txt
>
> Does anyone know how this could be accomplished as part of the invocation using vim commands?  This needs to be crossplatform and not rely on OS-provided functionality.

This is Vim-only: put below user command definition into your vimrc:
com! -bar Timestamped :exec 'file '. fnameescape(printf('%s-%s.%s', expand('%:r'), strftime('%Y%m%d_%H%M%S'), expand('%:e')))

Then
    vim +Timestamped filename.txt

will modify the filename after starting to edit "filename.txt".
:file reuses the same buffer and creates a new buffer for the original file.
The new (timestamped) file, although not written yet, is not considered modified.

--
Andy

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Start vim with a datestamped filename?

George Skuse
In reply to this post by Tim Chase
On Monday, March 13, 2017 at 9:24:30 AM UTC-4, Tim Chase wrote:

> On 2017-03-12 13:56, George Skuse wrote:
> > I'd like to have the filename dynamically datestamped
> > (yyyyMMdd_hhmmss), ie: filename-20170312_165737.txt
> >
> > Does anyone know how this could be accomplished as part of the
> > invocation using vim commands?  This needs to be crossplatform and
> > not rely on OS-provided functionality.
>
> With *nix-specific, it's easy:
>
>   vim filename-$(date +'%Y%m%d_%H%M%S').txt
>
> However that doesn't work so well on Windows (at least those that
> don't have bash & date). For Vim-specific, you could do
>
>   vim -c "exec strftime('e filename-%Y%m%d_%H%M%S.txt')"
>
> which Works For Me™ on Linux, FreeBSD, and Windows where I did a
> quick test.
>
> -tim
Thanks, I ended up using a modified version of that command:

vim -c "exec strftime('silent edit fname-%Y%m%d_%H%M%S.txt')|put +|normal 1G"

Now I can paste directly to a new instance of vim with a ready-made filename!  I'm using this with AutoHotKey (tied to Ctrl-Win-V), so I had to escape the %s with backticks (`):

Run "C:\Program Files (x86)\Vim\gvim.exe.lnk" -c "exec strftime('silent edit filename-`%Y`%m`%d_`%H`%M`%S.txt')|put +|normal 1G"


--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.