On 19/05/13 19:00, Jeri Raye wrote:
Hi,

Can you do math in Vim?
Can you do subtractions?

Sure you can do math, including subtractions and even much more complicated stuff than that -- on integers or on floating-point numbers but not on hour-minute-second times. For the latter, you have to convert them first to integers or floating-point numbers. In your case, to integral milliseconds (which I think would be best) or to floating-point seconds. (There are 86400000 milliseconds in a day, and IIUC the highest positive 32-bit signed integer is 2147483647 which leaves quite a bit of room.)

See
        :help split()
        :help expr5
        :help join()
        :help printf()

Beware that in Vim, the decimal point is always a dot, never a comma, regardless of locale. You may want to use substitute() (q.v.) to replace the comma by a dot in your seconds-and-milliseconds part, or else, split at the comma (as well as at both colons) and compute ((((((hours*60)+minutes)*60)+seconds)*1000)+milliseconds) giving you an integral time in milliseconds. To convert the integral milliseconds back to hours-minutes-seconds-milliseconds, see the integral / (quotient) and % (remainder) binary operators.


I have a srt file where I want to subtract 7 from all the seconds in the
file.
So this:
+------------------------------------+
24
00:07:55,641 --> 00:07:58,393
You can't do that to us!
We'll tell you a secret.

25
00:07:58,603 --> 00:07:59,769
A secret? Who by?
+------------------------------------+


becomes:
+------------------------------------+
24
00:07:48,641 --> 00:07:51,393
You can't do that to us!
We'll tell you a secret.

25
00:07:51,603 --> 00:07:52,769
A secret? Who by?
+------------------------------------+
The changes in this are:
(55 becomes 48)
(58 becomes 51)
(59 becomes 52)


Meaning:
- search for the lines with -->
- search for the number before the first , (comma)
- subtract that number with 7
- search for the number before the second , (comma)
- subtract that number with 7


I don't know if vim can subtract it also to negative numbers?
In case you have this:
+------------------------------------+
27
00:08:01,898 --> 00:08:04,316
She's visiting--

28
00:08:04,525 --> 00:08:07,277
Who wants to know about her?
+------------------------------------+

becomes:
+------------------------------------+
27
00:08:-06,898 --> 00:08:-03,316
She's visiting--

28
00:08:-03,525 --> 00:08:00,277
Who wants to know about her?
+------------------------------------+
The changes in this are:
(01 becomes -06)
(04 becomes -03)
(07 becomes 00)

Although not correct for srt syntax, these are manual fixable .

Rgds,
Jeri

Best regards,
Tony.
--
Science is facts; just as houses are made of stones, so is science made
of facts; but a pile of stones is not a house and a collection of facts
is not necessarily science.
                -- Henri Poincaré

--
--
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to