I have two vscode snippets that replace leading four space with *.
"Replace leading 4 spaces of non-empty lines with *": {
"body": [
"${TM_SELECTED_TEXT/^([ ]{4})(.+)$/* $2/gm}"
],
"description": "Replace leading 4 spaces of non-empty lines with *"
},
"Replace leading 8 spaces of non-empty lines with **": {
"body": [
"${TM_SELECTED_TEXT/^([ ]{8})(.+)$/** $2/gm}"
],
"description": "Replace leading 8 spaces of non-empty lines with **"
},
I want to create a single snippet that will merge both and do the following:
- if there are 4 spaces at the beginning of line, then replace it with single
*. - if there are 8 spaces at the beginning of line, then replace it with double
**.
Sample Input:
Motivation's First Law (Law of Persistence):
A person will remain in their current state of motivation
In simpler terms, individuals tend to maintain their current
Motivation's Second Law (Law of Momentum):
The rate of change of motivation of a person is
In simpler terms, this law suggests that the greater
Sample Output:
* Motivation's First Law (Law of Persistence):
** A person will remain in their current state of motivation
** In simpler terms, individuals tend to maintain their current
* Motivation's Second Law (Law of Momentum):
** The rate of change of motivation of a person is
** In simpler terms, this law suggests that the greater
How can I do that?
Try this keybinding for a snippet (or just use the snippet part) - in your
keybindings.json:The order of the regular expression part is important. It gets any leading 8 spaces into capture group 1. Or any leading 4 spaces into capture group 2.
Then the transform part
${1:+** }means if there is a group 1 insert**.Likewise,
${2:+* }means if there is a capture group 2 insert*.You will never have both a capture group 1 and 2 in the same match.