Quick Replace In Selection let you search and replace all occurrences by a regular expression (regex) (or literal string#1), within the current selection or the whole document.
It also support predefined rules to be used, and those rules allow multiple replacements in order at a time.
Note: By default, all matches are case sensitive #2, and ^
, $
match text selection boundaries instead of line boundaries #3.
Replace every selection with the inputted replacement, which has the same syntax as "Quick Replace In Selection". Usually the replacement contains $&
to be useful.
Repeat the last replace action which use either input expressions, or a rule.
This extension use the regular expression that JavaScript support for search and replace. In addition, a $&
in the "Replace to" input box or "replace"
values in the rules mean the whole match.
The "Replace to" input box support extra escape sequence \n
, \r
, \t
, \\
as in regex. Other unrecognized sequences are preserved.
E.g. ".+
replace to [$&]
" would mean replace any non-empty string (excluding newline characters), in the selected text(s), to be wrapped by []
.
For more information on regular expression, you may checkout:
Sometimes you might want to replace some character(s) to another within current text selection (e.g. to delimit the text into lines).
However, VS Code's builtin Replace
may have these inconveniences:
- too many steps: need to open dialog, enable the "Find in selection" option, some
Tab
keys or clicks, and need to press/trigger "Replace All" - it changes the last Find Target memory
This extension solves them all.
None.
This extension contributes the following settings:
-
quickReplaceInSelection.rules
: define the rules to be used by the commandQuick Replace In Selection (Use Rule)...
E.g. to define a rule which replaces newlines to
\n
, add this to your settings file:"quickReplaceInSelection.rules": { "Test Rule's Name": { "find": ["\n"], "replace": ["\\n"] } }
Remark: Next to
"find":
&"replace":
above, can specify"flags"
to add regular expression's modifiers.
E.g. specify"flags": "i"
for case insensitive match, or"flags": "m"
to change^
,$
to match line boundaries instead.
Hints:
- For how to define rules in the configuration, you could look at the default rules as examples. (
Ctrl-Shift-P
to open command palette, type "Open Default Settings (JSON)" & Enter, and search forquickReplaceInSelection.rules
) - You could make use of the default rules
Escape literal string for PCRE/extended regular expression
(optional) and thenJson stringify
and to put your regular expression in the"find"
settings ofquickReplaceInSelection.rules
. - An experimental feature: to only replace the first match (instead of all matches) in each selection, put a trailing
-g
in the"flags"
of the rule, or a leading "?-g
" in regex input box.
Some default rules are listed here:
- Encode html entities (minimal)
- Escape literal string for PCRE/extended regular expression
- Join lines by comma
- Json stringify
- Quote as C-string
- Single-quote lines and join by comma
- Split CSV/TSV into lines
- Trim lines
-
You could also define custom keyboard shortcuts for each rule, e.g.:
{ "key": "alt+j", "command": "quickReplaceInSelection.replaceInSelectionByRule", "when": "editorTextFocus", "args": { "ruleName": "Json stringify" } }, { "key": "shift+alt+7", "command": "quickReplaceInSelection.replaceInSelection", "when": "editorTextFocus", "args": { "find": "&", "replace": "\\n" } }
- If
"replace"
is not specified, it will prompt a picker to choose from.
- If
None.
See CHANGELOG.md
MIT - See LICENSE
#1 - to search & replace with a literal string, add a leading "*
" in the regex input box. This also disable backslash escape and $&
in the "Replace to" input box. (this feature is not available to rules)
#2 - to do the opposite, type a leading "?i
" before the regex in the input box (not a part of regex), or use "flags"
in rules.
#3 - to do the opposite, type a leading "+
" (preferred) or "?m
" before the regex in the input box (not a part of regex), or use "flags"
in rules.