mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18: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)
|
- [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)
|
- [Horizontal to Vertical and Back Again](vim/horizontal-to-vertical-and-back-again.md)
|
||||||
- [Incremental Searching](vim/incremental-searching.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)
|
- [Interactive Buffer List](vim/interactive-buffer-list.md)
|
||||||
- [Joining Lines Together](vim/joining-lines-together.md)
|
- [Joining Lines Together](vim/joining-lines-together.md)
|
||||||
- [Jump To Matching Pair](vim/jump-to-matching-pair.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