- add additional parameters parsing (other implementations will just
ignore them). E.g. if in RST we have:
.. code:: nim
:test: "nim c $1"
...
then in Markdown that will be:
```nim test="nim c $1"
...
```
- implement Markdown interpretation of additional indentation which is
less than 4 spaces (>=4 spaces is a code block but it's not
implemented yet). RST interpretes it as quoted block, for Markdown it's
just normal paragraphs.
- add separate `md2html` and `md2tex` commands. This is to separate
Markdown behavior in cases when it diverges w.r.t. RST significantly —
most conspicously like in the case of additional indentation above, and
also currently the contradicting inline rule of Markdown is also turned
on only in `md2html` and `md2tex`. **Rationale:** mixing Markdown and
RST arbitrarily is a way to nowhere, we need to provide a way to fix the
particular behavior. Note that still all commands have **both** Markdown
and RST features **enabled**. In this PR `*.nim` files can be processed
only in Markdown mode, while `md2html` is for `*.md` files and
`rst2html` for `*.rst` files.
- rename `*.rst` files to `.*md` as our current default behavior is
already Markdown-ish
- convert code blocks in `docgen.rst` to Markdown style as an example.
Other code blocks will be converted in the follow-up PRs
- fix indentation inside Markdown code blocks — additional indentation
is preserved there
- allow more than 3 backticks open/close blocks (tildas \~ are still not
allowed to avoid conflict with RST adornment headings) see also
https://github.com/nim-lang/RFCs/issues/355
- better error messages
- (other) fix a bug that admonitions cannot be used in sandbox mode; fix
annoying warning on line 2711
1.9 KiB
========================= nimgrep User's manual
:Author: Andreas Rumpf :Version: 1.6.0
.. default-role:: option .. contents::
Nimgrep is a command line tool for search and replace tasks. It can search for regex or peg patterns and can search whole directories at once. User confirmation for every single replace operation can be requested.
Nimgrep has particularly good support for Nim's
eccentric style insensitivity (see option -y below).
Apart from that it is a generic text manipulation tool.
Installation
Compile nimgrep with the command:
.. code:: cmd nim c -d:release tools/nimgrep.nim
And copy the executable somewhere in your $PATH.
Command line switches
.. include:: nimgrep_cmdline.txt
Examples
All examples below use default PCRE Regex patterns:
-
To search recursively in Nim files using style-insensitive identifiers:
.. code:: cmd nimgrep --recursive --ext:'nim|nims' --ignoreStyle
short: -r --ext:'nim|nims' -y
.. Note:: we used
'quotes to avoid special treatment of|symbol for shells like Bash -
To exclude version control directories (Git, Mercurial=hg, Subversion=svn) from the search:
.. code:: cmd nimgrep --excludeDir:'^.git$' --excludeDir:'^.hg$' --excludeDir:'^.svn$'
short: --ed:'^.git$' --ed:'^.hg$' --ed:'^.svn$'
-
To search only in paths containing the
testssub-directory recursively:.. code:: cmd nimgrep --recursive --includeDir:'(^|/)tests($|/)'
short: -r --id:'(^|/)tests($|/)'
.. Attention:: note the subtle difference between
--excludeDir:option: and--includeDir:option:: the former is applied to relative directory entries and the latter is applied to the whole paths -
Nimgrep can search multi-line, e.g. to find files containing
importand thenstrutilsuse pattern'import(.|\n)*?strutils':option:.