crunch makes calculations in Vim more accessible by providing an operator to evaluate mathematical expressions, loosening Vim's math syntax, and forcing integers into floating point numbers.
| Mode | Key Mapping | Description |
|---|---|---|
| normal | g={motion} | Evaluate the text that {motion} moves over |
| normal | g== | Evaluate the current line |
| visual | g= | Evaluate the highlighted expressions |
-
:[range]Crunch[!]- Evaluates the current visual selection or provided range and adds result
to the end of the line(s) With the [!] crunch does not append the result
but replaces the provided range or visual selection with the result this
behavior can be reversed by setting
g:crunch_result_type_append= 0
- Evaluates the current visual selection or provided range and adds result
to the end of the line(s) With the [!] crunch does not append the result
but replaces the provided range or visual selection with the result this
behavior can be reversed by setting
-
:Crunch- Provides a prompt in the command for you to enter your mathematical expression. The result is then available to be pasted from the default register.
-
:Crunch {expression}- Where {expression} is some mathematical expression to be evaluated. The result is then available to be pasted from the default register.
- selection.vim
- Vim compiled with
+floatfeature
The following chart shows the looser math syntax provided with crunch, compared to the default math syntax.
| Feature | With crunch | Without crunch |
|---|---|---|
| Implied Multiplication | ||
| cos(0)cos(0) = 1 | cos(0)*cos(0) = 1.0 | |
| 2sin(1) = 1.682942 | 2*sin(1) = 1.682942 | |
| sin(1)2 = 1.682942 | sin(1)*2 = 1.682942 | |
| (2*3)(3*2) = 36 | (2*3)*(3*2) = 36 | |
| 2(3*2) = 12 | 2*(3*2) = 12 | |
| Integer to Float Conversion | ||
| 1/2 = 0.5 | 1.0/2.0 = 0.5 | |
| .25*4 = 1 | 0.25*4 = 1.0 | |
| Decimals w/o Leading Zeros | ||
| .5/2 = 0.25 | 0.5/2 = 0.25 | |
| .25*4 = 1 | 0.25*4 = 1.0 | |
| Removed Zeros In Result | ||
| 0.25*4 = 1 | 0.25*4 = 1.0 | |
| pow(2,8) = 256 | pow(2,8)= 256.0 |