{
  "name": "vim",
  "description": "Vi IMproved, a programmer's text editor",
  "options": [
    {
      "names": [
        "-v"
      ],
      "description": "Vi mode (like 'vi')"
    },
    {
      "names": [
        "-e"
      ],
      "description": "Ex mode (like 'ex')"
    },
    {
      "names": [
        "-E"
      ],
      "description": "Improved Ex mode"
    },
    {
      "names": [
        "-s"
      ],
      "description": "Enable silent mode (when in ex mode), or Read Normal mode commands from file",
      "takes_arg": true,
      "arg": {
        "name": "scriptin",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-d"
      ],
      "description": "Diff mode (like 'vimdiff')"
    },
    {
      "names": [
        "-y"
      ],
      "description": "Easy mode (like 'evim', modeless)"
    },
    {
      "names": [
        "-R"
      ],
      "description": "Readonly mode (like 'view')"
    },
    {
      "names": [
        "-Z"
      ],
      "description": "Restricted mode (like 'rvim')"
    },
    {
      "names": [
        "-m"
      ],
      "description": "Modifications (writing files) not allowed"
    },
    {
      "names": [
        "-M"
      ],
      "description": "Modifications in text not allowed"
    },
    {
      "names": [
        "-b"
      ],
      "description": "Binary mode"
    },
    {
      "names": [
        "-l"
      ],
      "description": "Lisp mode"
    },
    {
      "names": [
        "-C"
      ],
      "description": "Compatible with Vi: 'compatible'"
    },
    {
      "names": [
        "-N"
      ],
      "description": "Not fully Vi compatible: 'nocompatible'"
    },
    {
      "names": [
        "-V"
      ],
      "description": "Be verbose [level N] [log messages to fname]",
      "takes_arg": true,
      "arg": {
        "name": "N"
      }
    },
    {
      "names": [
        "-D"
      ],
      "description": "Debugging mode"
    },
    {
      "names": [
        "-n"
      ],
      "description": "No swap file, use memory only"
    },
    {
      "names": [
        "-r"
      ],
      "description": "Recover crashed session if filename is specified, otherwise list swap files and exit",
      "takes_arg": true,
      "arg": {
        "name": "filename",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-L"
      ],
      "description": "Same as -r",
      "takes_arg": true,
      "arg": {
        "name": "filename",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-T"
      ],
      "description": "Set terminal type to <terminal>",
      "takes_arg": true,
      "arg": {
        "name": "terminal"
      }
    },
    {
      "names": [
        "--not-a-term"
      ],
      "description": "Skip warning for input/output not being a terminal"
    },
    {
      "names": [
        "--ttyfail"
      ],
      "description": "Exit if input or output is not a terminal"
    },
    {
      "names": [
        "-u"
      ],
      "description": "Use <vimrc> instead of any .vimrc",
      "takes_arg": true,
      "arg": {
        "name": "vimrc",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--noplugin"
      ],
      "description": "Don't load plugin scripts"
    },
    {
      "names": [
        "-p"
      ],
      "description": "Open N tab pages (default: one for each file)",
      "takes_arg": true,
      "arg": {
        "name": "N"
      }
    },
    {
      "names": [
        "-o"
      ],
      "description": "Open N windows (default: one for each file)",
      "takes_arg": true,
      "arg": {
        "name": "N"
      }
    },
    {
      "names": [
        "-O"
      ],
      "description": "Like -o but split vertically",
      "takes_arg": true,
      "arg": {
        "name": "N"
      }
    },
    {
      "names": [
        "+"
      ],
      "description": "Start at end of file, if line number is specified, start at that line",
      "takes_arg": true,
      "arg": {
        "name": "lnum"
      }
    },
    {
      "names": [
        "--cmd"
      ],
      "description": "Execute <command> before loading any vimrc file",
      "takes_arg": true,
      "arg": {
        "name": "command"
      }
    },
    {
      "names": [
        "-c"
      ],
      "description": "Execute <command> after loading the first file",
      "takes_arg": true,
      "arg": {
        "name": "command"
      }
    },
    {
      "names": [
        "-S"
      ],
      "description": "Source file <session> after loading the first file",
      "takes_arg": true,
      "arg": {
        "name": "session",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-w"
      ],
      "description": "Append all typed commands to file <scriptout>",
      "takes_arg": true,
      "arg": {
        "name": "scriptout",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-W"
      ],
      "description": "Write all typed commands to file <scriptout>",
      "takes_arg": true,
      "arg": {
        "name": "scriptout",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-x"
      ],
      "description": "Edit encrypted files"
    },
    {
      "names": [
        "--startuptime"
      ],
      "description": "Write startup timing messages to <file>",
      "takes_arg": true,
      "arg": {
        "name": "file",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-i"
      ],
      "description": "Use <viminfo> instead of .viminfo",
      "takes_arg": true,
      "arg": {
        "name": "viminfo",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "--clean"
      ],
      "description": "'nocompatible', Vim defaults, no plugins, no viminfo"
    },
    {
      "names": [
        "-h",
        "--help"
      ],
      "description": "Print Help message and exit"
    },
    {
      "names": [
        "--version"
      ],
      "description": "Print version information and exit"
    }
  ],
  "args": [
    {
      "template": "filepaths"
    }
  ]
}
