Skip to content

Vimspector

vimspector - A multi-language debugging system for Vim

.vimspector.json

Configuration

console
externalTerminal
integratedTerminal

Examples

Python examples

debugpy를 사용한다.

{
  "configurations": {
    "Python Launch": {
      "adapter": "debugpy",
      "filetypes": ["python"],
      "default": true,
      "variables": {
        "VERBOSE_FLAG": "--verbose"
      },
      "configuration": {
        "request": "launch",
        "type": "python",
        "stopOnEntry": true,
        "console": "externalTerminal",
        "cwd": "${workspaceRoot}",
        "python": "${workspaceRoot}/.venv/bin/python",
        "program": "${workspaceRoot}/main.py",
        "env": {
          "PYTHONPATH": "${workspaceRoot}"
        },
        "args": [
          "${VERBOSE_FLAG}"
        ]
      },
      "breakpoints": {
        "exception": {
          "raised": "N",
          "uncaught": "Y",
          "userUnhandled": "N"
        }
      }
    }
  }
}

Customize Layout

Predefined Variables

The following variables are provided:

  • ${dollar} - has the value $, can be used to enter a literal dollar
  • $$ - a literal dollar
  • ${workspaceRoot} - the path of the folder where .vimspector.json was found
  • ${workspaceFolder} - the path of the folder where .vimspector.json was found
  • ${gadgetDir} - path to the OS-specific gadget dir (<vimspector home>/gadgets/<OS>)
  • ${file} - the current opened file
  • ${relativeFile} - the current opened file relative to workspaceRoot
  • ${relativeFileDirname} - path of opened file relative to workspaceRoot
  • ${fileBasename} - the current opened file’s basename
  • ${fileBasenameNoExtension} - the current opened file’s basename with no file extension
  • ${fileDirname} - the current opened file’s dirname
  • ${fileExtname} - the current opened file’s extension
  • ${cwd} - the current working directory of the active window on launch
  • ${unusedLocalPort} - an unused local TCP port

Exceptions

Python

raised
Break on Raised Exceptions
기본값 N
uncaught
Break on Uncaught Exceptions
기본값 Y
userUnhandled
Break on User Uncaught Exceptions
기본값 N

Troubleshooting

vim-gitgutter 와 sign column 충돌

:set signcolumn=auto:2

pynvim.api.common.NvimError: Invalid option name 'winbar'

Error detected while processing function vimspector#Launch[4]..provider#python3#Call:
line   18:
Error invoking 'python_execute' on channel 8 (python3-script-host):
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 71, in wrapper
    return fct( self, *args, **kwargs )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 477, in Start
    self._StartWithConfiguration( configuration, adapter )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 522, in _StartWithConfiguration
    start()
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 501, in start
    self._SetUpUI()
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 71, in wrapper
    return fct( self, *args, **kwargs )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 1213, in _SetUpUI
    self._SetUpUIHorizontal()
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 1219, in _SetUpUIHorizontal
    self._codeView = code.CodeView( self.session_id,
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/code.py", line 51, in __init__
    self._RenderWinBar()
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/code.py", line 58, in _RenderWinBar
    utils.SetWinBar(
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/utils.py", line 992, in SetWinBar
    return SetWinBarOption( *args )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/utils.py", line 981, in SetWinBarOption
    window.options[ 'winbar' ] = '  '.join( winbar )
  File "/home/yourid/.pyenv/versions/opy-yourid-3.9.17-default/lib/python3.9/site-packages/pynvim/api/common.py", line 147, in __setitem__
    self._set(key, value)
  File "/home/yourid/.pyenv/versions/opy-yourid-3.9.17-default/lib/python3.9/site-packages/pynvim/api/common.py", line 80, in request
    return self._session.request(name, self, *args, **kwargs)
  File "/home/yourid/.pyenv/versions/opy-yourid-3.9.17-default/lib/python3.9/site-packages/pynvim/api/nvim.py", line 199, in request
    res = self._session.request(name, *args, **kwargs)
  File "/home/yourid/.pyenv/versions/opy-yourid-3.9.17-default/lib/python3.9/site-packages/pynvim/msgpack_rpc/session.py", line 139, in request
    raise self.error_wrapper(err)
pynvim.api.common.NvimError: Invalid option name 'winbar'

nvim 최신버전으로 설치해보자.

pynvim.api.common.NvimError: Vim:E117: Unknown function: win_execute

Error detected while processing function vimspector#Launch[4]..provider#python3#Call:
line   18:
Error invoking 'python_execute' on channel 5 (python3-script-host):
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 71, in wrapper
    return fct( self, *args, **kwargs )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 477, in Start
    self._StartWithConfiguration( configuration, adapter )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 522, in _StartWithConfiguration
    start()
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 501, in start
    self._SetUpUI()
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 71, in wrapper
    return fct( self, *args, **kwargs )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 1213, in _SetUpUI
    self._SetUpUIHorizontal()
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/debug_session.py", line 1275, in _SetUpUIHorizontal
    vim.command( 'doautocmd User VimspectorUICreated' )
  File "/home/yourid/.pyenv/versions/3.9.17/lib/python3.9/contextlib.py", line 126, in __exit__
    next(self.gen)
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/utils.py", line 282, in RestoreCurrentBuffer
    Call( 'win_execute', WindowID( window ), f'bu { old_buffer.number }' )
  File "/home/yourid/.vim/bundle/vimspector/python3/vimspector/utils.py", line 842, in Call
    return vim.eval( call )
  File "/home/yourid/.pyenv/versions/opy-yourid-3.9.17-default/lib/python3.9/site-packages/pynvim/plugin/script_host.py", line 210, in eval
    obj = self.request("vim_eval", expr)
  File "/home/yourid/.pyenv/versions/opy-yourid-3.9.17-default/lib/python3.9/site-packages/pynvim/api/nvim.py", line 199, in request
    res = self._session.request(name, *args, **kwargs)
  File "/home/yourid/.pyenv/versions/opy-yourid-3.9.17-default/lib/python3.9/site-packages/pynvim/msgpack_rpc/session.py", line 139, in request
    raise self.error_wrapper(err)
pynvim.api.common.NvimError: Vim:E117: Unknown function: win_execute

nvim 최신버전으로 설치해보자.

See also

Favorite site