Skip to content
A Vim plug-in to list and jump to grammar errors found by LanguageTool
Vim script
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

This Vim plug-in collects all grammar mistakes (of the currently open file) found by LanguageTool into the quickfix (or local) list from which they can be jumped to.


If you already have LanguageTool installed and start it in the command line by an executable, say /usr/bin/langtool, then add to your vimrc the line

let g:langtool_cmd = '/usr/bin/langtool'

Otherwise, download and unpack LanguageTool, say into the folder ~/LanguageTool, and add to your vimrc the line

let g:langtool_jar = '~/LanguageTool/languagetool-commandline.jar'

where the right-hand side, ~/LanguageTool/languagetool-commandline.jar, is the path of the file languagetool-commandline.jar.


The command


populates the location-list with all grammar mistakes found by LanguageTool. The (location-list) window that lists them can then be opened by :lwindow and they can be jumped to by :lN respectively :lp. (Have a look at vim-unimpaired to use convenient mappings instead).

LanguageTool runs in the background by Vim's job feature, provided a custom :Make command exists, such as

  • that of vim-dispatch or,

  • that defined by

    command! -bang -nargs=* -complete=file Make AsyncRun<bang> -auto=make -program=make

    with AsyncRun.vim installed (see also Hints below).

The (quickfix) window that lists the grammar mistakes can then be opened by :cwindow and they can be jumped to by :cN respectively :cp.

To automatically open the location-list window after LangTool, add autocmd QuickFixCmdPost lmake lwindow to your vimrc, respectively autocmd QuickFixCmdPost make cwindow if the :Make command exists. To automatically run LangTool after saving the modifications to a text, mail or markdown file, add to your vimrc:

    autocmd FileType text,mail,markdown autocmd BufWrite <buffer=abuf> LangTool


Command-line parameters can be passed to LanguageTool by the global variable g:langtool_parameters and the buffer-local variable b:langtool_parameters. By default

let g:langtool_parameters = ''


let b:langtool_parameters = '--autoDetect'

For example, the mother tongue can be set and (categories of) rules enabled and disabled by adding to your vimrc

let s:enablecategories = 'CREATIVE_WRITING,WIKIPEDIA' .

let g:langtool_parameters = ' --mothertongue de' .
      \ ' --enablecategories ' . s:enablecategories .
      \ ' --enable ' . s:enable .
      \ ' --disable ' . s:disable

:LangTool sets the language that LanguageTool will use to that used by Vim to spellcheck by

let b:langtool_parameters = '--language ' . &l:spelllang

To avoid that the file is saved before LanguageTool checks it for mistakes,

let g:langtool_save = 0


To avoid empty lines in the quickfix list, add let g:asyncrun_trim = 1 to your vimrc.

Other options, such as g:asyncrun_save might be of interest.

Related Plug-ins

This Vim plug-in is simpler than vim-LanguageTool and vim-grammarous. In particular, it lets Vim parse the LanguageTool output to stdout via an appropriate value of &errorformat; see :help errorformat. (Whereas both cited plug-ins implement their proper parser for the deprecated XML output format of LanguageTool.)

You can’t perform that action at this time.