Skip to content

Vim Usage

Brendan Maginnis edited this page Oct 22, 2020 · 7 revisions

Installation

  1. Install the coc.nvim LSP client for Vim/Neovim.
  2. Install the Sourcery pypi package pip install --user sourcery-cli. Note down the full command with which sourcery.
  3. Sign up for Sourcery on the website and get your token.
  4. In Vim, run :CocConfig and this to your settings:
{
    "languageserver": {
        "sourcery": {
            "command": "<Command to run Sourcery>",
            "args": [
                "lsp"
            ],
            "filetypes": [
                "python"
            ],
            "initializationOptions": {
                "token": "<Your Token Here>",
                "extension_version": "coc.vim",
                "editor_version": "vim"
            },
            "settings": {
              "sourcery": {
                "metricsEnabled": true
              }
            }
        }
    }
}
  1. Optionally you can set up key bindings:
nnoremap <leader>cl :CocDiagnostics<cr>
nnoremap <leader>cf :CocFix<cr>
nnoremap <leader>ch :call CocAction('doHover')<cr>

How does it work?

Sourcery scans the currently open Python file. If it finds improvements in your code it highlights the relevant lines of code.

When on a suggestion line, you can run :call CocAction('doHover') to view a description of the refactoring along with a diff. Then you can run :CocFix to either make the suggested change or to disable it.

The extension can also show you inline code metrics, giving you an instant view of your code quality. Run call CocAction('doHover') on a function's definition to get an instant view of its code quality, and functions with very low quality will additionally be highlighted as warnings.

See the Sourcery Tutorial for more detailed info.

How do I see all the refactorings?

To show all the Sourcery suggestions in the location list run :CocDiagnostics.

How do I configure Sourcery?

You can configure Sourcery to ignore certain files or folders in your project. Please see the Sourcery configuration section for details.

Clone this wiki locally