{
  "name": "rg",
  "description": "Recursively searches current directory for lines matching a pattern",
  "options": [
    {
      "names": [
        "-A",
        "--after-context"
      ],
      "description": "Shows NUM lines after each match",
      "args": [
        {
          "name": "Num"
        }
      ]
    },
    {
      "names": [
        "--auto-hybrid-regex"
      ],
      "description": "When this flag is used, ripgrep will dynamically choose between supported regex engines depending on the features used in a pattern"
    },
    {
      "names": [
        "-B",
        "--before-context"
      ],
      "description": "Shows NUM lines before each match",
      "args": [
        {
          "name": "Num"
        }
      ]
    },
    {
      "names": [
        "--binary"
      ],
      "description": "Enabling this flag will cause ripgrep to search binary files"
    },
    {
      "names": [
        "--block-buffered"
      ],
      "description": "When enabled, ripgrep will use block buffering"
    },
    {
      "names": [
        "-b",
        "--byte-offset"
      ],
      "description": "Prints the 0-based byte offset within the input file before each line of output"
    },
    {
      "names": [
        "-s",
        "--case-sensitive"
      ],
      "description": "Search case sensitively"
    },
    {
      "names": [
        "--color"
      ],
      "description": "Controls when to use colors",
      "args": [
        {
          "name": "when",
          "suggestions": [
            "never",
            "auto",
            "always",
            "ansi"
          ]
        }
      ]
    },
    {
      "names": [
        "--colors"
      ],
      "description": "Specifies color settings for use in the output",
      "args": [
        {
          "name": "Color Spec",
          "description": "{type}:{attribute}:{value}, ex: `match:fg:magenta`",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "--column"
      ],
      "description": "Shows column numbers for the first match on each line"
    },
    {
      "names": [
        "-C",
        "--context"
      ],
      "description": "Shows NUM lines before and after each match",
      "args": [
        {
          "name": "NUM"
        }
      ]
    },
    {
      "names": [
        "--context-separator"
      ],
      "description": "The string used to separate non-contiguous context lines in the output",
      "args": [
        {
          "name": "Separator"
        }
      ]
    },
    {
      "names": [
        "-c",
        "--count"
      ],
      "description": "Suppresses normal output and shows the number of lines that match the given pattersns for each file searched"
    },
    {
      "names": [
        "--count-matches"
      ],
      "description": "Suppresses normal output and shows the number of individual matches of the given patterns for each file searched"
    },
    {
      "names": [
        "--crlf"
      ],
      "description": "Treats CRLF as a line terminator instead of just a line break"
    },
    {
      "names": [
        "--debug"
      ],
      "description": "Shows debug messages"
    },
    {
      "names": [
        "--dfa-size-limit"
      ],
      "description": "The upper size limit of the regex DFA",
      "args": [
        {
          "name": "NUM"
        },
        {
          "name": "suffix",
          "isOptional": true
        }
      ]
    },
    {
      "names": [
        "-E",
        "--encoding"
      ],
      "description": "Specifies the text encoding that ripgrep will use on all files searched",
      "args": [
        {
          "name": "Encoding"
        }
      ]
    },
    {
      "names": [
        "--engine"
      ],
      "description": "Specifies which regular expression engine to use",
      "args": [
        {
          "name": "Engine",
          "suggestions": [
            "default",
            "pcre2",
            "auto"
          ]
        }
      ]
    },
    {
      "names": [
        "-f",
        "--file"
      ],
      "description": "Searches for patterns from the given file, with one pattern per line",
      "args": [
        {
          "name": "Patternfile",
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--files"
      ],
      "description": "Prints each file that would be searched without actually performing the search"
    },
    {
      "names": [
        "-l",
        "--files-with-matches"
      ],
      "description": "Only prints the paths with at least one match"
    },
    {
      "names": [
        "--files-without-match"
      ],
      "description": "Only prints the paths that contains zero matches"
    },
    {
      "names": [
        "-F",
        "--fixed-strings"
      ],
      "description": "Treats the pattern as a literal string instead of a regular expression"
    },
    {
      "names": [
        "-L",
        "--follow"
      ],
      "description": "Follows symbolic links while traversing directories"
    },
    {
      "names": [
        "-g",
        "--glob"
      ],
      "description": "Includes or excludes files and directories for searching that match the given glob",
      "args": [
        {
          "name": "GLOB",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "--glob-case-insensitive"
      ],
      "description": "Processes glob patterns given with the -g/--glob flag",
      "dependsOn": [
        "-g",
        "--glob"
      ]
    },
    {
      "names": [
        "--heading"
      ],
      "description": "Prints the file path above clusters of matches from each file instead of printing the file path as a prefix for reach matched line"
    },
    {
      "names": [
        "--hidden"
      ],
      "description": "Searches hidden files and directories"
    },
    {
      "names": [
        "--iglob"
      ],
      "description": "Includes or excludes files and directories for searching that match given the glob",
      "args": [
        {
          "name": "GLOB",
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--ignore-file"
      ],
      "description": "Specifies a path to one or more .gitignore format rules files",
      "args": [
        {
          "name": "Path",
          "isVariadic": true,
          "template": "filepaths"
        }
      ]
    },
    {
      "names": [
        "--ignore-file-case-insensitive"
      ],
      "description": "Process ignores files case insensitively"
    },
    {
      "names": [
        "--include-zero"
      ],
      "description": "Prints the number of matchesfor each file when used with --count or --count matches"
    },
    {
      "names": [
        "-v",
        "--invert-match"
      ],
      "description": "Inverts matching"
    },
    {
      "names": [
        "--json"
      ],
      "description": "Enables printing results in a JSON Lines format"
    },
    {
      "names": [
        "--no-json"
      ],
      "description": "Disables the JSON Lines format"
    },
    {
      "names": [
        "--line-buffered"
      ],
      "description": "Enables line buffering"
    },
    {
      "names": [
        "-n",
        "--line-number"
      ],
      "description": "Shows the line numbers (1-based)"
    },
    {
      "names": [
        "-x",
        "--line-regexp"
      ],
      "description": "Only shows matches surrounded by line boundaries"
    },
    {
      "names": [
        "-M",
        "--max-columns"
      ],
      "description": "Don't print lines longer than this limit in bytes",
      "args": [
        {
          "name": "NUM"
        }
      ]
    },
    {
      "names": [
        "--max-columns-preview"
      ],
      "description": "Completely replaces any line that is too long with a message indicating that a matching line was removed"
    },
    {
      "names": [
        "-m",
        "--max-count"
      ],
      "description": "Limits the number of matching lines per file searched to NUM",
      "args": [
        {
          "name": "NUM"
        }
      ]
    },
    {
      "names": [
        "--max-depth"
      ],
      "description": "Limits the depth of directory traversal to NUM levels beyond the paths given",
      "args": [
        {
          "name": "NUM"
        }
      ]
    },
    {
      "names": [
        "--max-filesize"
      ],
      "description": "Ignores files larger than NUM in size",
      "args": [
        {
          "name": "NUM"
        },
        {
          "name": "Suffix",
          "isOptional": true
        }
      ]
    },
    {
      "names": [
        "-mmap"
      ],
      "description": "Searches using memory maps when possible"
    },
    {
      "names": [
        "-U",
        "--multiline"
      ],
      "description": "Enables matching across multiple lines"
    },
    {
      "names": [
        "--multiline-dotall"
      ],
      "description": "Enables dot all in your regex pattern"
    },
    {
      "names": [
        "--no-config"
      ],
      "description": "Never read configuration files"
    },
    {
      "names": [
        "-I",
        "--no-filename"
      ],
      "description": "Never prints the file path with the matched lines"
    },
    {
      "names": [
        "--no-heading"
      ],
      "description": "Don't group matches by each file"
    },
    {
      "names": [
        "--no-ignore"
      ],
      "description": "Don't respect ignore files (.gitignore, .ignore, etc.)"
    },
    {
      "names": [
        "--no-ignore-dot"
      ],
      "description": "Don't respect .ignore files"
    },
    {
      "names": [
        "--no-ignore-excluded"
      ],
      "description": "Don't respect ignore files that are manually configured for the repository"
    },
    {
      "names": [
        "--no-ignore-files"
      ],
      "description": "Ignores any --ignore-file flags"
    },
    {
      "names": [
        "--no-ignore-global"
      ],
      "description": "Don't respect ignore files that come from `global` sources"
    },
    {
      "names": [
        "--no-ignore-messages"
      ],
      "description": "Suppresses all error messages related to parsing ignore files"
    },
    {
      "names": [
        "--no-ignore-parent"
      ],
      "description": "Don't repsect ignore files in parent directories"
    },
    {
      "names": [
        "--no-ignore-vcs"
      ],
      "description": "Don't respect version control ignore files"
    },
    {
      "names": [
        "-N",
        "--no-line-number"
      ],
      "description": "Suppress line numbers"
    },
    {
      "names": [
        "--no-messages"
      ],
      "description": "Suppresses all error messages related to opening and reading files"
    },
    {
      "names": [
        "--no-map"
      ],
      "description": "Never use memory maps, even when they might be faster"
    },
    {
      "names": [
        "--no-pcre2-unicode"
      ]
    },
    {
      "names": [
        "--no-require-git"
      ],
      "description": "Will only respect global gitignore rules"
    },
    {
      "names": [
        "--no-unicode"
      ],
      "description": "Turn off unicode"
    },
    {
      "names": [
        "--unicode"
      ],
      "description": "Disables --no-unicode flag"
    },
    {
      "names": [
        "-0",
        "--null"
      ],
      "description": "Whenever a file path is printed, follow it with a NUL byte"
    },
    {
      "names": [
        "--null-data"
      ],
      "description": "Uses NUL as a line terminator instead of the default line break"
    },
    {
      "names": [
        "--one-file-system"
      ],
      "description": "Will not cross file system boundaries relative to where the search started from"
    },
    {
      "names": [
        "--no-one-file-system"
      ],
      "description": "Disables `--one-file-system` flag"
    },
    {
      "names": [
        "-o",
        "--only-matching"
      ],
      "description": "Prints only the matched (non-empty) parts of a matching line, with each such part on a separate output line"
    },
    {
      "names": [
        "--passthru"
      ],
      "description": "Prints both matching and non-matching lines"
    },
    {
      "names": [
        "--path-separator"
      ],
      "description": "Sets the path separator to use when printing file paths",
      "args": [
        {
          "name": "Separator"
        }
      ]
    },
    {
      "names": [
        "-P",
        "--pcre2"
      ],
      "description": "Usess the PCRE2 regex engine instead of its default regex engine"
    },
    {
      "names": [
        "--pcre2-version"
      ],
      "description": "Prints the version of PCRE2 in use"
    },
    {
      "names": [
        "--pre"
      ],
      "description": "For each input File, search the standard output of the command",
      "args": [
        {
          "name": "Command"
        }
      ]
    },
    {
      "names": [
        "--pre-glob"
      ],
      "description": "Only files that match the given set of globs will be handed to the command specified by the `--pre flag`",
      "args": [
        {
          "name": "GLOB",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "-p",
        "--pretty"
      ],
      "description": "Convenience alias for `--color always --heading --line-number`"
    },
    {
      "names": [
        "-q",
        "--quiet"
      ],
      "description": "Do not print anything to stdout"
    },
    {
      "names": [
        "--regex-size-limit"
      ],
      "description": "Sets the upper size limit of the compiled regex",
      "args": [
        {
          "name": "NUM"
        },
        {
          "name": "Suffix",
          "isOptional": true
        }
      ]
    },
    {
      "names": [
        "-e",
        "--regexp"
      ],
      "description": "A pattern to search for",
      "args": [
        {
          "name": "Pattern",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "-r",
        "--replace"
      ],
      "description": "Replace every match with the text given when printing results",
      "args": [
        {
          "name": "Replacement Text"
        }
      ]
    },
    {
      "names": [
        "-z",
        "--search-zip"
      ],
      "description": "Search in compressed files"
    },
    {
      "names": [
        "-S",
        "--smart-case"
      ],
      "description": "Searches case insensitively if the pattern is all lowercase"
    },
    {
      "names": [
        "--sort"
      ],
      "args": [
        {
          "name": "Sortby",
          "suggestions": [
            "none",
            "path",
            "modified",
            "accessed",
            "created"
          ]
        }
      ]
    },
    {
      "names": [
        "--sortr"
      ],
      "description": "Enables sorting results in descending order",
      "args": [
        {
          "name": "Sortby",
          "suggestions": [
            "none",
            "path",
            "modified",
            "accessed",
            "created"
          ]
        }
      ]
    },
    {
      "names": [
        "--stats"
      ],
      "description": "Prints aggregate statistics about this ripgrep search"
    },
    {
      "names": [
        "-a",
        "--text"
      ],
      "description": "Searches binary files as if they were text"
    },
    {
      "names": [
        "-j",
        "--threads"
      ],
      "description": "The approximate number of threads to use",
      "args": [
        {
          "name": "NUM"
        }
      ]
    },
    {
      "names": [
        "--trim"
      ],
      "description": "All ASCII whitespace at the beginning of each line printed will be trimmed"
    },
    {
      "names": [
        "-t",
        "--type"
      ],
      "description": "Only searches files matching TYPE",
      "args": [
        {
          "name": "Type",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "--type-add"
      ],
      "description": "Add a new glob for a particular file type",
      "args": [
        {
          "name": "Type Spec",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "--type-clear"
      ],
      "description": "Clear the file type globs previously defined for type",
      "args": [
        {
          "name": "type",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "--type-list"
      ],
      "description": "Shows all supported file types and their corresponding globs"
    },
    {
      "names": [
        "-T",
        "--type-not"
      ],
      "description": "Do not search files matching type",
      "args": [
        {
          "name": "type",
          "isVariadic": true
        }
      ]
    },
    {
      "names": [
        "-u",
        "--unrestricted"
      ],
      "description": "Reduce the level of smart searching, increase by adding `u`s, ex: -uuu"
    },
    {
      "names": [
        "--vimgrep"
      ],
      "description": "Shows results with every match on its own line, including line numbers and column nnumbers"
    },
    {
      "names": [
        "-H",
        "--with-filename"
      ],
      "description": "Displays the file path for matches"
    },
    {
      "names": [
        "-w",
        "--word-regexp"
      ],
      "description": "Only shows the matches surrounded by word boundaries"
    }
  ],
  "args": [
    {
      "name": "Pattern",
      "description": "A regular expression used for searching"
    },
    {
      "name": "Path",
      "description": "A file or directory to search",
      "isOptional": true,
      "isVariadic": true,
      "template": "filepaths"
    }
  ]
}
