:set wrap |
:set nowrap |
|---|---|
![]() |
![]() |
Core features,
Markdown, HTML, $LaTeX$, Typst & YAML within Neovim.Wrap support(markdown only, at the moment)! Allows using text wrapping while not losing most rendering features! See integrations#wrap for fixing visual glitches or integrations#nowrap for disabling it.highlight groups that automatically updates with the colorscheme!Callout, checkbox completions for blink.cmp & nvim-cmp.Also see,
Customizable previews for container & void elements.
Supports the following container elements out of the box,
<a></a><b></b><code></code><em></em><i></i><kbd></kbd><mark></mark><pre></pre><s></s>, <strike></strike>, <del></del><strong></strong><sub></sub><sup></sup><u></u>Supports the following void elements out of the box,
<hr><br>Supports basic LaTeX syntax,
$$...$$) & inline math(typically $...$).\text{}.Supports commonly used math commands out of the box,
\frac{}\sin{}\cos{}\tan{}\sinh{}\cosh{}\tanh{}\csc{}\sec{}\cot{}\csch{}\sech{}\coth{}\arcsin{}\arccos{}\arctan{}\arg{}\deg{}\drt{}\dim{}\exp{}\gcd{}\hom{}\inf{}\ker{}\lg{}\lim{}\liminf{}\limsup{}\ln{}\log{}\min{}\max{}\Pr{}\sup{}\sqrt{}\lvert{}\lVert{}\boxed{}Supports the following math fonts(requires any modern Unicode font),
default(Default math font).\mathbb{}\mathbf{}\mathbffrak{}\mathbfit{}\nathbfscr{}\mathcal{}\mathfrak{}\mathsf{}\mathsfbf{}\mathsfbfit{}\mathsfit{}\mathtt{}Supports Unicode based subscript & superscript texts.
Supports 2056 different math symbol definitions.
Supports basic markdown(Github-flavored) syntax,
callouts & titles).setext & atx).+, -, *, n. & n)).Wrap support for,
markdown.headings.org_indent is used).markdown.list_items.<item>.add_padding is true).tables(limited due to technical limitations).Org-mode like indentation for headings.
Obsidian/PKM extended syntax support,
Wide variety of HTML entity names & codes support.
Github emoji shorthands support. Supports 1920 shorthands.
Custom configuration based on link patterns.
Supports the following items,
-, + & n.).Supports a variety of typst symbols,
Supports Unicode based subscript & superscript texts.
Custom property icons.
Custom property scope decorations.
Custom icons(/decorations) based on property type & value(e.g. booleans).
Supports the following properties out of the box,
| Normal hybrid mode | Linewise hybrid mode |
|---|---|
![]() |
![]() |
Node-based edit range(default).
Clears a range of lines covered by the (named)TSNode under the cursor. Useful when editing lists, block quotes, code blocks, tables etc.
Range-based edit range. Clears the selected number of lines above & below the cursor.
Supports multi-window setups.
Internal Icon provider features,
:Markview traceShow to see what the plugin has been doing(including how long some of them took).:Markview traceExport to export these logs.System,
[!NOTE] It is recommended to use
nowrap(though there is wrap support in the plugin) &expandtab.
Colorscheme,
External icon providers,
[!NOTE] You need to change the config to use the desired icon provider.
{ preview = { icon_provider = "internal", -- "mini" or "devicons" } }
Parsers,
[!TIP] You can use
nvim-treesitterto easily install parsers. You can install all the parsers with the following command,:TSInstall markdown markdown_inline html latex typst yaml
[!IMPORTANT] On windows, you might need
tree-sitterCLI for the $LaTeX$ parser.
markdownmarkdown_inlinehtml(optional)latex(optional)typst(optional)yaml(optional)Fonts,
[!TIP] It is recommended to run
:checkhealth markviewafter installing the plugin to check if any potential issues exist.
Add this to your plugin list.
Plug 'OXY2DEV/markview.nvim'
[!WARNING] Do not lazy load this plugin as it is already lazy-loaded. Lazy-loading may cause more time for the previews to load when starting Neovim!
The plugin should be loaded after your colorscheme to ensure the correct highlight groups are used. See integrations.transparent_colorschemes if you use a transparent colorscheme and the colors don't look right.
-- For `plugins/markview.lua` users.
return {
"OXY2DEV/markview.nvim",
lazy = false,
-- Completion for `blink.cmp`
-- dependencies = { "saghen/blink.cmp" },
};
-- For `plugins.lua` users.
{
"OXY2DEV/markview.nvim",
lazy = false,
-- Completion for `blink.cmp`
-- dependencies = { "saghen/blink.cmp" },
},
local MiniDeps = require("mini.deps");
MiniDeps.add({
source = "OXY2DEV/markview.nvim",
-- Completion for `blink.cmp`
-- depends = { "saghen/blink.cmp" },
});
[!WARNING]
luarocks packagemay sometimes be a bit behindmain.
:Rocks install markview.nvim
Tagged releases can be found in the release page.
[!NOTE]
Github releasesmay sometimes be slightly behindmain.
code spans don't get recognized when on the line after a code block(if the line after the code span is empty).
This is most likely due to some bug in either the markdown or the markdown_inline parser.
Incorrect wrapping when setting wrap using modeline.
This is due to textoff being 0(instead of the size of the statuscolumn) when entering a buffer.
You can find more usage recipes here.
This plugin follows the sub-commands approach for creating commands. There is only a single :Markview command.
It comes with the following sub-commands,
[!NOTE] When no sub-command name is provided(or an invalid sub-command is used)
:Markviewwill run:Markview Toggle.
| Sub-command | Arguments | Description |
|---|---|---|
Toggle |
none | Toggles preview globally. |
Enable |
none | Enables preview globally. |
Disable |
none | Disables preview globally. |
toggle |
buffer, integer | Toggles preview for buffer. |
enable |
buffer, integer | Enables preview for buffer. |
disable |
buffer, integer | Disables preview for buffer. |
splitToggle |
none | Toggles splitview. |
| Sub-command | Arguments | Description |
|---|---|---|
attach |
buffer, integer | Attaches to buffer. |
detach |
buffer, integer | Detaches from buffer. |
Start |
none | Allows attaching to new buffers. |
Stop |
none | Prevents attaching to new buffers. |
Sub-commands related to controlling hybrid_mode,
| Sub-command | Arguments | Description |
|---|---|---|
HybridEnable |
none | Enables hybrid mode. |
HybridDisable |
none | Disables hybrid mode. |
HybridToggle |
none | Toggles hybrid mode. |
hybridEnable |
buffer, integer | Enables hybrid mode for buffer. |
hybridDisable |
buffer, integer | Disables hybrid mode for buffer. |
hybridToggle |
buffer, integer | Toggles hybrid mode for buffer. |
linewiseEnable |
none | Enables linewise hybrid mode. |
linewiseDisable |
none | Disables linewise hybrid mode. |
linewiseToggle |
none | Toggles linewise hybrid mode. |
Sub-commands for working with splitview,
| Sub-command | Arguments | Description |
|---|---|---|
splitOpen |
buffer, integer | Opens splitview for buffer. |
splitClose |
none | Closes any open splitview. |
splitRedraw |
none | Updates splitview contents. |
Sub-commands for manual preview updates,
| Sub-command | Arguments | Description |
|---|---|---|
render |
buffer, integer | Renders preview for buffer. |
clear |
buffer, integer | Clears preview for buffer. |
Render |
none | Updates preview of all active buffers. |
Clear |
none | Clears preview of all active buffer. |
Sub-commands for bug report,
| Sub-command | Arguments | Description |
|---|---|---|
traceExport |
none | Exports trace logs to markview_log.txt. |
traceShow |
none | Shows trace logs in a window. |
[!TIP] buffer defaults to the current buffer. So, you can run commands on the current buffer without providing the buffer.
:Markview toggle "Toggles preview of the current buffer.
If you have time and want to make this project better, consider helping me fix any of these issues,
require("markview.renderers.markdown").output().splitview update as little content as possible.[^1]: The value of the linked group is used literally. So, manually changing the link group wouldn't work for this.
[^2]: The value of MarkviewCode is used for the background. So, changing either of the linked group wouldn't affect these.