mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 07:08:01 +00:00
Add Increment All The Numbers as a vim til.
This commit is contained in:
34
vim/increment-all-the-numbers.md
Normal file
34
vim/increment-all-the-numbers.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Increment All The Numbers
|
||||
|
||||
Vim's substitution feature can be used for more than simple static text
|
||||
replacement. Each replacement can be the result of some operation on the
|
||||
original text. For instance, what if we'd like to increment all numbers in the
|
||||
buffer? We can achieve this by searching for all numbers and then using `\=`
|
||||
with `submatch`. Whenever the replacement string of a substitution starts
|
||||
with `\=`, the remainder of the string is evaluated as an expression.
|
||||
|
||||
Given the following text in our buffer:
|
||||
|
||||
```
|
||||
1 2 a b c 45 123 1982
|
||||
```
|
||||
|
||||
We can run the following substitution command:
|
||||
|
||||
```
|
||||
:%s/\d\+/\=submatch(0)+1/g
|
||||
```
|
||||
|
||||
This will transform all digits in the buffer resulting in:
|
||||
|
||||
```
|
||||
2 3 a b c 46 124 1983
|
||||
```
|
||||
|
||||
Want to decrement all the numbers instead?
|
||||
|
||||
```
|
||||
:%s/\d\+/\=submatch(0)-1/g
|
||||
```
|
||||
|
||||
See `:h sub-replace-expression` for more details.
|
||||
Reference in New Issue
Block a user