regex-railroad.nvim
generates useful text and diagrams to help explain regular expressions in your code.
- nvim-treesitter/nvim-treesitter to extract the regular expression text
-- plugins/regex-railroad.lua:
return {
"rclawlor/regex-railroad.nvim",
tag = "0.0.3",
dependencies = { "nvim-treesitter/nvim-treesitter" }
}
Use :RegexText
to generate a text description of the regular expression under your cursor, or :RegexRailroad
to instead generate a railroad diagram!
To remap the functions to something more convenient, use the following:
vim.api.nvim_set_keymap("n", "<C-x>", "<cmd>RegexText<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<C-s>", "<cmd>RegexRailroad<CR>", {noremap = true, silent = true})
This section explains the available options for configuring regex-railroad.nvim
require("regex-railroad").setup({
--- Github release of plugin
tag = "v0.0.3",
--- Highlight group used in :RegexText
highlight = {
bold = true,
fg = "fg",
bg = "bg"
}})
Feature | Example | Supported |
---|---|---|
Character set | [ABC] | ✓ |
Negated set | [^ABC] | ✓ |
Range | [A-Z] | ✓ |
Dot | . | ✓ |
Word | \w | ✓ |
Non-word | \W | ✓ |
Digit | \d | ✓ |
Non-digit | \D | ✓ |
Whitespace | \s | ✓ |
Non-whitespace | \S | ✓ |
Unicode category | \p{L} | ✗ |
Non-unicode category | \p{L} | ✗ |
Unicode script | \p{Han} | ✗ |
Non-unicode script | \P{Han} | ✗ |
Feature | Example | Supported |
---|---|---|
Beginning | ^ | ✓ |
End | $ | ✓ |
Word boundary | \b | ✗ |
Non-word boundary | \B | ✗ |
Feature | Example | Supported |
---|---|---|
Capturing group | (ABC) | ✓ |
Named capturing group | (?ABC) | ✓ |
Numeric reference | \1 | ✗ |
Non-capturing group | (?:ABC) | ✓ |
Feature | Example | Supported |
---|---|---|
Positive lookahead | (?=ABC) | ✗ |
Negative lookahead | (?!ABC) | ✗ |
Positive lookbehind | (?<=ABC) | ✗ |
Negative lookbehind | (?<!ABC) | ✗ |
Feature | Example | Supported |
---|---|---|
Plus | + | ✓ |
Star | * | ✗ |
Quantifier | {1,3} | ✓ |
Optional | ? | ✓ |
Lazy | ? | ✗ |
Alternation | | | ✓ |