Fast and Highly Extensible Vim script Language Lint implemented in Python.

Vimjas Vimjas Last update: Feb 10, 2024
logo

Development Status Latest Version Supported Python versions Supported Python implementations Build Status

Vint is a Vim script Language Lint. The goal to reach for Vint is:

  • Highly extensible
  • Highly customizable
  • High performance

But now, Vint is under development. We hope you develop a policy to help us.

Quick start

You can install with pip.

$ pip install vim-vint

You can use Vint with vim-syntastic/syntastic:

let g:syntastic_vim_checkers = ['vint']

You can install with vim-plug:

plug Vimjas/vint

Configure

Vint will read config files on the following priority order:

  • User config:
  • e.g. ~/.vintrc.yaml (the filename can be .vintrc.yml or .vintrc)
  • Project config:
  • e.g. path/to/proj/.vintrc.yaml (the filename can be .vintrc.yml or .vintrc)
  • Command line config:
  • e.g. $ vint --error, $ vint --max-violations 10
  • Comment config (highest priority):
  • e.g. " vint: -ProhibitAbbreviationOption +ProhibitSetNoCompatible

You can see all options on Wiki.

The default configuration is defined in default_config.yaml.

User config

You can configure global Vint config by ~/.vintrc.yaml as following:

cmdargs:
  # Checking more strictly
  severity: style_problem

  # Enable coloring
  color: true

  # Enable Neovim syntax
  env:
    neovim: true

policies:
  # Disable a violation
  ProhibitSomethingEvil:
    enabled: false

  # Enable a violation
  ProhibitSomethingBad:
    enabled: true

You can see all policy names on Vint linting policy summary.

Project config

You can configure project local Vint config by .vintrc.yaml as following:

cmdargs:
  # Checking more strictly
  severity: style_problem

  # Enable coloring
  color: true

  # Enable Neovim syntax
  env:
    neovim: true

policies:
  # Disable a violation
  ProhibitSomethingEvil:
    enabled: false

  # Enable a violation
  ProhibitSomethingBad:
    enabled: true

You can see all policy names on Vint linting policy summary.

Command line config

You can configure linting severity, max errors, ... as following:

$ vint --color --style ~/.vimrc

And you can see all available options by using --help:

$ vint --help
usage: vint [-h] [-v] [-V] [-e] [-w] [-s] [-m MAX_VIOLATIONS] [-c]
            [--no-color] [-j] [-t] [--enable-neovim] [-f FORMAT]
            [--stdin-display-name STDIN_DISPLAY_NAME]
            [files [files ...]]

Lint Vim script

positional arguments:
  files                 file or directory path to lint

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -V, --verbose         output verbose message
  -e, --error           report only errors
  -w, --warning         report errors and warnings
  -s, --style-problem   report errors, warnings and style problems
  -m MAX_VIOLATIONS, --max-violations MAX_VIOLATIONS
                        limit max violations count
  -c, --color           colorize output when possible
  --no-color            do not colorize output
  -j, --json            output json style
  -t, --stat            output statistic info
  --enable-neovim       enable Neovim syntax
  -f FORMAT, --format FORMAT
                        set output format
  --stdin-display-name STDIN_DISPLAY_NAME
                        specify a file path that is used for reporting when
                        linting standard inputs

Comment config

You can enable/disable linting policies by a comment as following:

" vint: -ProhibitAbbreviationOption

let s:save_cpo = &cpo
set cpo&vim

" vint: +ProhibitAbbreviationOption

" do something...

" vint: -ProhibitAbbreviationOption

let &cpo = s:save_cpo
unlet s:save_cpo

And you can use line config comments. It can enable/disable linting policies in only one line by the postfix comment:

" vint: next-line -ProhibitUnusedVariable
let s:foobar = 'x'
echo s:{'foo' . 'bar'}

This syntax is: " vint: [next-line] [+-]<PolicyName> [+-]<PolicyName> .... You can see all policy names on Vint linting policy summary.

Code health

Coverage Status Code Health Dependency Status

License

MIT

Acknowledgement

Subscribe to our newsletter