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:
@@ -288,6 +288,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
|
||||
- [Help For Non-Normal Mode Features](vim/help-for-non-normal-mode-features.md)
|
||||
- [Horizontal to Vertical and Back Again](vim/horizontal-to-vertical-and-back-again.md)
|
||||
- [Incremental Searching](vim/incremental-searching.md)
|
||||
- [Increment All The Numbers](vim/increment-all-the-numbers.md)
|
||||
- [Interactive Buffer List](vim/interactive-buffer-list.md)
|
||||
- [Joining Lines Together](vim/joining-lines-together.md)
|
||||
- [Jump To Matching Pair](vim/jump-to-matching-pair.md)
|
||||
|
||||
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