{"id":25385509,"url":"https://github.com/ubaldot/vim-markdown-extras","last_synced_at":"2026-01-21T18:35:12.461Z","repository":{"id":277239762,"uuid":"931754518","full_name":"ubaldot/vim-markdown-extras","owner":"ubaldot","description":"Taking notes and editing markdown files: make it easy!","archived":false,"fork":false,"pushed_at":"2025-11-24T16:11:02.000Z","size":326,"stargazers_count":12,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-28T04:42:30.369Z","etag":null,"topics":["markdown","note-taking","vim","vim-plugin","vim9","vim9-plugin"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ubaldot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2025-02-12T19:56:40.000Z","updated_at":"2025-11-24T16:10:59.000Z","dependencies_parsed_at":"2025-03-22T15:19:35.584Z","dependency_job_id":"d1322d47-4ddc-4613-8ea7-c4215c523c66","html_url":"https://github.com/ubaldot/vim-markdown-extras","commit_stats":null,"previous_names":["ubaldot/vim-markdown-extras"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ubaldot/vim-markdown-extras","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubaldot%2Fvim-markdown-extras","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubaldot%2Fvim-markdown-extras/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubaldot%2Fvim-markdown-extras/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubaldot%2Fvim-markdown-extras/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ubaldot","download_url":"https://codeload.github.com/ubaldot/vim-markdown-extras/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubaldot%2Fvim-markdown-extras/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28639347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T18:04:35.752Z","status":"ssl_error","status_checked_at":"2026-01-21T18:03:55.054Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["markdown","note-taking","vim","vim-plugin","vim9","vim9-plugin"],"created_at":"2025-02-15T09:49:02.888Z","updated_at":"2026-01-21T18:35:12.455Z","avatar_url":"https://github.com/ubaldot.png","language":"Vim Script","funding_links":[],"categories":["Markdown"],"sub_categories":[],"readme":"# vim-MarkDown-Extras (MDE)\n\n[![asciicast](https://asciinema.org/a/UbDuIOCSPp1H1F4a7VIcZm5Qj.svg)](https://asciinema.org/a/UbDuIOCSPp1H1F4a7VIcZm5Qj)\n\nThis plugin adds some spice to the bundled [vim-markdown][3], such as:\n\n- Easy toggle italic, bold, strike-through, code text-styles,\n- Easy to add/jump/remove/preview links,\n- Toggle quoted and code blocks,\n- Format with `gq` and on save,\n- Render with `pandoc`,\n- ... and more.\n\n# Requirements\n\nVim 9.1-1270 is required. You must set a `\u003clocalleader\u003e` key and your `.vimrc`\nfile shall include the following lines:\n\n```\n    filetype indent plugin on\n    syntax on\n```\n\nThe following is not mandatory, but you want to enable the rendering feature,\nyou need to install [pandoc][1]. To automatically open the rendered files, Vim\nmust have the `:Open` command.\n\nAlong the same line, to enable the formatting feature, you need to install\n[prettier][2] or any other formatting program of your choice.\n\n# Usage\n\nThe best way to describe how to operate this plugin it's through examples, so\nlet's show some.\n\n### Text-styles\n\nOpen a markdown file and place the cursor on a word. Hit `\u003clocalleader\u003ebiw` to\nchange the text-style inside-the-word to bold (`iw` is a text-objext). Then,\nwhile letting the cursor on the bold text, hit `\u003clocalleader\u003ed` to remove it.\n\nNext, try to do the same with arbitrary text-objects or in Visual mode by\nreplacing `b` with `i` for italics, `s` for strike-through, `c` for code, etc.\nFor example, you can use `\u003clocalleader\u003esa(` for strike-through all the text\ndelimited by parenthesis (provided that the cursor is located in a region\ndelimited by parenthesis).\n\nYou can also highlight text with `\u003clocalleader\u003eh`. However, the highlight is\nnot persistent. As usual, you can remove the highlight with `\u003clocalleader\u003ed`.\n\nSee `:h markdown-extras-mappings` for all the possible text styles.\n\n### Links\n\nNow, place the cursor on a word and hit `\u003center\u003e`. Select `Create new link`\nfrom the popup menu and point to an existing file or just type a new file\nname. If you created a new file, fill it in with some text and save it. Hit\n`\u003cbackspace\u003e` to go back to the previous file and place the cursor to the\nnewly created link. Hit `K`. Then, hit `\u003center\u003e` again to open the link. The\nlink can also be external URL:s, e.g. `https://example.com`. If the link is a\nfile, then `\u003cshift-enter\u003e` open it in a vertical split window.\n\nNext, create some new links and use `\u003clocalleader\u003en` and `\u003clocalleader\u003eN` to\nlocate their position in the current buffer. When on a link text, hit\n`\u003clocalleader\u003ed` to remove the link.\n\nAlthough you can hit `\u003center\u003e` to link a word, more generally you can use\n`\u003clocalleader\u003el` plus some motion to create links, like for example\n`\u003clocalleader\u003elfa` (note that `fa` is a motion).\n\nYou can also dynamically refer to links while typing by setting the `omnifunc`\noption to `mde_funcs.OmniFunc` in your `~/.vim/after/ftplugin/markdown.vim`\nfile. For example, to trigger links auto-completion when you hit `[`, add the\nfollowing lines to your `~/.vim/after/ftplugin/markdown.vim` file:\n\n```vim\n    setlocal completeopt=menu,menuone,noselect\n    import autoload \"mde_funcs.vim\"\n    setlocal omnifunc=mde_funcs.OmniFunc\n    inoremap \u003cbuffer\u003e ][ ][\u003cC-x\u003e\u003cC-o\u003e\n```\n\nsee `:h completeopt` to customize the menu behavior.\n\nIn case you are working on a markdown file with mixed inline and\nreference-style links, you can convert the former to the latter by using\n`:MDEConvertLinks` command. All the newly created links will be placed after\nthe `\u003c!-- DO NOT REMOVE vim-markdown-extras references DO NOT REMOVE--\u003e`\ncomment line. The reference identifiers are numbers.\n\n\u003e [!Note]\n\u003e\n\u003e The links management only applies to links reported after the\n\u003e `\u003c!-- DO NOT REMOVE vim-markdown-extras references DO NOT REMOVE--\u003e` comment\n\u003e line. Such a line shall be unique in the buffer.\n\n### Lists\n\nYou can create lists as in a normal markdown file. However, note that the\nbehavior of the `\u003center\u003e` key is hacked to mimic the behavior of Microsoft\nproducts and respect possible nesting. Although there are many reasons to\nstick with the bundled [vim-markdown][3] behavior when it comes to lists, my\nuse-cases and preferences require a different behavior. If you want the\nstandard [vim-markdown][3] behavior, then set\n`g:markdown_extras_config['hack_CR'] = false` in your `.vimrc`.\n\nYou can create to-do lists as you would do in normal markdown, by starting\nlines with `- [ ]` . When in normal mode, you can check/uncheck the item in\nthe to-do list with `\u003clocalleader\u003ex` in normal mode. You can change how\ncheck-boxes are rendered by setting the keys `empty_checkbox` and\n`marked_checkbox` of the `g:markdown_extras_config` dictionary, for example\nyou can set `g:markdown_extras_config[marked_checkbox] = 0x2714`. The value\nshall be a valid Unicode point value.\n\n\u003e [!Note]\n\u003e\n\u003e If you have [vim-outline][4] installed, then you can use `\u003clocalleader\u003eo` to\n\u003e display the unchecked items of the to-do list in a scratch buffer.\n\n### Formatting\n\nYou can format text as usual by using `gq`. Here `gq` uses `prettier`,\nprovided that you have it installed. That is, if you use `gq` plus motion, or\nif you visually select some text and then hit `gq`, then `prettier` will only\nprettify such a portion of text. You can also prettify the whole buffer on\nsave by setting `g:markdown_extras_config['format_on_save'] = true` in your\n`.vimrc`.\n\n### Rendering\n\nYou can then use `:make` to render your buffer with `pandoc`, provided that\nyou have `pandoc` installed.\n\nHowever, sometimes you want to render \u0026 open the rendered file at once, and\nfor this reason you have `:MDEMake`. Try to run call such a command and hit\n`\u003ctab\u003e` to see possible targets.\n\nYou can pass arguments to `pandoc` via the key `pandoc_args` of the\n`g:markdown_extras_config` dictionary. You could for example set the\nfollowing:\n\n```\n  g:markdown_extras_config = {}\n  g:markdown_extras_config['pandoc_args'] =\n  [$'--css=\"{$HOME}/dotfiles/my_css_style.css\"',\n      $'--lua-filter=\"{$HOME}/dotfiles/emoji-admonitions.lua\"']\n```\n\n\u003e [!Note]\n\u003e\n\u003e The rendered file will automatically open if your Vim has the `:Open`\n\u003e command.\n\n### Indices\n\nAs the plugin can be used for note-taking, it may be desirable to access\ndifferent indices in an ergonomic way. This can be achieved with the command\n`:MDEIndex` that takes `list\u003cstring\u003e`, `list\u003clist\u003cstring\u003e\u003e` or\n`dict\u003cstring\u003e` as argument. If no argument is passed, it reads the content\nof `g:markdown_extras_indices`. See `:h MDEIndex` for more info.\n\nFor more information about key-bindings, configuration, etc. take a look at\n`:h markdown-extras`.\n\n### Limitations\n\nNothing is perfect, and this plugin is no exception. Here are some known\nlimitations:\n\n- **Markdown is not a regular language**, yet many features rely on regular\n  expressions. This means there will always be edge cases where some features\n  fail. Properly parsing non-regular languages requires more advanced tools\n  like Tree-sitter. However, I personally don't believe it's worth \"punishing\"\n  all use cases with slower, more memory-hungry solutions just to handle rare\n  edge cases. The choice here is to favor efficiency and speed for the\n  majority, rather than striving for exhaustive coverage.\n\n- **The plugin leans toward using reference-style links** with numeric\n  identifiers. You can try using strings as identifiers, but I can't guarantee\n  everything will work as expected.\n\n- **The link management system depends on a special comment:**\n  `\u003c!-- DO NOT REMOVE vim-markdown-extras references DO NOT REMOVE --\u003e` This\n  comment must be unique and present. Trying to locate links scattered\n  randomly throughout the buffer using regular expressions would likely run\n  into the same problems mentioned in the first point.\n\n### License\n\nBSD-3.\n\n\u003c!-- DO NOT REMOVE vim-markdown-extras references DO NOT REMOVE--\u003e\n\n[1]: https://pandoc.org\n[2]: https://prettier.io\n[3]: https://github.com/tpope/vim-markdown\n[4]: https://github.com/ubaldot/vim-outline\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubaldot%2Fvim-markdown-extras","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fubaldot%2Fvim-markdown-extras","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubaldot%2Fvim-markdown-extras/lists"}