{"id":13410336,"url":"https://github.com/quarto-dev/quarto-nvim","last_synced_at":"2026-01-16T16:31:33.173Z","repository":{"id":49348713,"uuid":"517434189","full_name":"quarto-dev/quarto-nvim","owner":"quarto-dev","description":"Quarto mode for Neovim","archived":false,"fork":false,"pushed_at":"2026-01-15T09:23:10.000Z","size":209,"stargazers_count":483,"open_issues_count":6,"forks_count":21,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-15T15:30:55.976Z","etag":null,"topics":["neovim","neovim-plugin","nvim","nvim-cmp","quarto"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quarto-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-07-24T20:52:39.000Z","updated_at":"2026-01-15T09:22:15.000Z","dependencies_parsed_at":"2023-11-18T16:26:40.792Z","dependency_job_id":"2ffaa70c-a67f-4e66-9a7a-e3d56cbcf018","html_url":"https://github.com/quarto-dev/quarto-nvim","commit_stats":{"total_commits":199,"total_committers":9,"mean_commits":22.11111111111111,"dds":0.5628140703517588,"last_synced_commit":"eed598983fa4040eed77191f69462c1348770b8a"},"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/quarto-dev/quarto-nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarto-dev%2Fquarto-nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarto-dev%2Fquarto-nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarto-dev%2Fquarto-nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarto-dev%2Fquarto-nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quarto-dev","download_url":"https://codeload.github.com/quarto-dev/quarto-nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarto-dev%2Fquarto-nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["neovim","neovim-plugin","nvim","nvim-cmp","quarto"],"created_at":"2024-07-30T20:01:06.303Z","updated_at":"2026-01-16T16:31:33.149Z","avatar_url":"https://github.com/quarto-dev.png","language":"Lua","readme":"# quarto-nvim\n\nQuarto-nvim provides tools for working on [Quarto](https://quarto.org/) manuscripts in Neovim.\nYou can get started with Quarto [here](https://quarto.org/docs/get-started/).\n\n## Walkthrough\n\nThe [get started section](https://quarto.org/docs/get-started/hello/neovim.html) also comes with a video version to walk you through.\nThe playlist is extended as more features are added, so join us for a \"Coffee with Quarto and Neovim\":\n\n\u003chttps://youtu.be/3sj7clNowlA?list=PLabWm-zCaD1axcMGvf7wFxJz8FZmyHSJ7\u003e\n\n## Setup\n\nYou can install `quarto-nvim` from GitHub with your favourite Neovim plugin manager\nlike [lazy.nvim](https://github.com/folke/lazy.nvim),\n[packer.nvim](https://github.com/wbthomason/packer.nvim) or [VimPlug](https://github.com/junegunn/vim-plug).\n\nExample `lazy.nvim` plugin specification:\n\n```lua\n-- plugins/quarto.lua\nreturn {\n  {\n    \"quarto-dev/quarto-nvim\",\n    dependencies = {\n      \"jmbuhr/otter.nvim\",\n      \"nvim-treesitter/nvim-treesitter\",\n    },\n  },\n}\n```\n\nBecause Quarto provides a lot of functionality through integration with existing plugins,\nyou may want to experiment with my [config](https://github.com/jmbuhr/nvim-config)\nand then pick the relevant parts from the\n[`lua/plugins/quarto.lua`](https://github.com/jmbuhr/nvim-config/blob/main/lua/plugins/quarto.lua) file\nto integrate it into your own existing configuration.\n\nPlugins and their configuration to look out for in either of those files are:\n\n```lua\n{\n    'quarto-dev/quarto-nvim',\n    'jmbuhr/otter.nvim',\n    'hrsh7th/nvim-cmp',\n    'neovim/nvim-lspconfig',\n    'nvim-treesitter/nvim-treesitter'\n}\n```\n\nQuarto-nvim requires [Neovim stable version](https://github.com/neovim/neovim/releases/tag/stable) \u003e= `v0.10.0`.\n\n## Usage\n\n### Configure\n\nYou can pass a lua table with options to the setup function or via `lazy.nvim`s `opts` keyword.\nIt will be merged with the default options, which are shown below in the example.\nIf you want to use the defaults, simply call `setup` without arguments or with an empty table.\n\n```lua\nrequire('quarto').setup{\n  debug = false,\n  closePreviewOnExit = true,\n  lspFeatures = {\n    enabled = true,\n    chunks = \"curly\",\n    languages = { \"r\", \"python\", \"julia\", \"bash\", \"html\" },\n    diagnostics = {\n      enabled = true,\n      triggers = { \"BufWritePost\" },\n    },\n    completion = {\n      enabled = true,\n    },\n  },\n  codeRunner = {\n    enabled = true,\n    default_method = \"slime\", -- \"molten\", \"slime\", \"iron\" or \u003cfunction\u003e\n    ft_runners = {}, -- filetype to runner, ie. `{ python = \"molten\" }`.\n    -- Takes precedence over `default_method`\n    never_run = { 'yaml' }, -- filetypes which are never sent to a code runner\n  },\n}\n```\n\n### Preview\n\nUse the command\n\n```vim\nQuartoPreview\n```\n\nor access the function from lua, e.g. to create a keybinding:\n\n```lua\nlocal quarto = require('quarto')\nquarto.setup()\nvim.keymap.set('n', '\u003cleader\u003eqp', quarto.quartoPreview, { silent = true, noremap = true })\n```\n\nThen use the keyboard shortcut to open `quarto preview` for the current file or project in the active working directory in the neovim integrated terminal in a new tab.\n\nNote: While you can use `QuartoPreview` without configuring the plugin via `quarto.setup`,\nother features strictly require it.\n\n## Language support\n\n`quarto-nvim` automatically activates `otter.nvim` for quarto files if language features are enabled.\n\n### Demo\n\nhttps://user-images.githubusercontent.com/17450586/209436101-4dd560f4-c876-4dbc-a0f4-b3a2cbff0748.mp4\n\n### Usage\n\nYou can open the hover documentation for R, python and julia code chunks with `K`, got-to-definition with `gd` etc.\nand get autocompletion via the lsp source for your completion plugin.\n\nA list of currently available language server requests can be found in the [otter.nvim documentation](https://github.com/jmbuhr/otter.nvim?tab=readme-ov-file#lsp-methods-currently-implemented).\n\n### R diagnostics configuration\n\nTo make diagnostics work with R you have to configure the linter a bit, since the language\nbuffers in the background separate code with blank links, which we want to ignore.\nOtherwise you get a lot more diagnostics than you probably want.\nAdd file `.lintr` to your home folder and fill it with:\n\n```\nlinters: linters_with_defaults(\n    trailing_blank_lines_linter = NULL,\n    trailing_whitespace_linter = NULL\n  )\n```\n\nYou can now also enable other lsp features, such as the show hover function\nand shortcut, independent of showing diagnostics by enabling lsp features\nbut not enabling diagnostics.\n\n### Other Edge Cases\n\nOther languages might have similar issues (e.g. I see a lot of warnings about whitespace when activating diagnostics with `lua`).\nIf you come across them and have a fix, I will be very happy about a pull request!\nOr, what might ultimately be the cleaner way of documenting language specific issues, an entry in the [wiki](https://github.com/quarto-dev/quarto-nvim/wiki).\n\n## Running Code\n\nQuarto-nvim doesn't run code for you, instead, it will interface with existing code running\nplugins and tell them what to run. There are currently three such code running plugins that quarto\nwill work with:\n\n1. [molten-nvim](https://github.com/benlubas/molten-nvim) - a code runner that supports the jupyter\n   kernel, renders output below each code cell, and optionally renders images in the terminal.\n2. [vim-slime](https://github.com/jpalardy/vim-slime) - a general purpose code runner with support\n   for sending code to integrated nvim terminals, tmux panes, and many others.\n3. [iron.nvim](https://github.com/Vigemus/iron.nvim) - general purpose code runner and library for\n    within-neovim REPL interaction in splits or floating windows.\n\nWe recommend picking a code runner, setting it up based on its respective README and then coming back\nto this point to learn how Quarto will augment that code runner.\n\nThis plugin enables easily sending code cells to your code runner.\nThere are two different ways to do this:\ncommands, covered below; and lua functions, covered right here.\n_By default these functions will only run cells that are the same language as the current cell._\n\nQuarto exposes code running functions through to runner module: `require('quarto.runner')`.\nThose\nfunctions are:\n\n- `run_cell()` - runs the current cell\n- `run_above(multi_lang)` - runs all the cells above the current one, **and** the current one, in order\n- `run_below(multi_lang)` - runs all the cells below the current one, **and** the current one, in order\n- `run_all(multi_lang)` - runs all the cells in the document\n- `run_line(multi_lang)` - runs the line of code at your cursor\n- `run_range()` - run code cells inside (touched by) the current visual range\n\nEach function that takes the optional `multi_lang` argument will run cells of all languages when\ncalled with the value `true`, and will only run cells that match the language of the current cell\notherwise. As a result, just calling `run_all()` will run all cells that match the language of the\ncurrent cell.\n\nHere are some example run mappings:\n\n```lua\nlocal runner = require(\"quarto.runner\")\nvim.keymap.set(\"n\", \"\u003clocalleader\u003erc\", runner.run_cell,  { desc = \"run cell\", silent = true })\nvim.keymap.set(\"n\", \"\u003clocalleader\u003era\", runner.run_above, { desc = \"run cell and above\", silent = true })\nvim.keymap.set(\"n\", \"\u003clocalleader\u003erA\", runner.run_all,   { desc = \"run all cells\", silent = true })\nvim.keymap.set(\"n\", \"\u003clocalleader\u003erl\", runner.run_line,  { desc = \"run line\", silent = true })\nvim.keymap.set(\"v\", \"\u003clocalleader\u003er\",  runner.run_range, { desc = \"run visual range\", silent = true })\nvim.keymap.set(\"n\", \"\u003clocalleader\u003eRA\", function()\n  runner.run_all(true)\nend, { desc = \"run all cells of all languages\", silent = true })\n```\n\n\n## Available Commands\n\n```vim\nQuartoPreview\nQuartoClosePreview\nQuartoHelp \u003c..\u003e\nQuartoActivate\nQuartoDiagnostics\nQuartoSend\nQuartoSendAbove\nQuartoSendBelow\nQuartoSendAll\nQuartoSendLine\n```\n\n## Recommended Plugins\n\nQuarto works great with a number of plugins in the neovim ecosystem.\nYou can find my (@jmbuhr) personal (and thus up-to-date) configuration for use with Quarto, R and python here:\n\n\u003chttps://github.com/jmbuhr/nvim-config\u003e\n\nBut remember, the best config is always your own.\n","funding_links":[],"categories":["Programming Languages Support","Lua","Supported editors"],"sub_categories":["(requires Neovim 0.5)","Diagnostics"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarto-dev%2Fquarto-nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquarto-dev%2Fquarto-nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarto-dev%2Fquarto-nvim/lists"}