https://github.com/owen-dechow/videre.nvim
JSON explorer using Neovim's terminal interface.
https://github.com/owen-dechow/videre.nvim
graph json neovim terminal
Last synced: 10 months ago
JSON representation
JSON explorer using Neovim's terminal interface.
- Host: GitHub
- URL: https://github.com/owen-dechow/videre.nvim
- Owner: Owen-Dechow
- License: mit
- Created: 2025-07-08T00:15:14.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-08-14T17:09:58.000Z (10 months ago)
- Last Synced: 2025-08-18T05:15:55.524Z (10 months ago)
- Topics: graph, json, neovim, terminal
- Language: Lua
- Homepage:
- Size: 85.9 KB
- Stars: 87
- Watchers: 3
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐ videre.nvim
Many editors have the option to view JSON & YAML files as a graph. Neovim, with a
terminal interface, does not have this luxury. While one can't create an
interface like JSON Crack, it is possible to build a similar JSON explorer
using Neovim's terminal interface.
[Videre Preview](https://github.com/user-attachments/assets/eb09e14b-4243-4b27-9928-1c20fec5d337)
```
โญโโโโโโโโโโโโโโโโโโโฌโโโฎโญโโโฌโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎโญโโโฌโโโโโโโฌโโโโโโโโโโโโฎ
โ Videreโ[]โโฏ โ 1โฮฮฮฮฮฮฮฮฮฮ"This is a great plugin"โโ โ userโฮ"will try"โ
โ Exampleโ{}โโฎ โ 2โฮฮฮฮฮฮฮฮฮฮฮฮฮ"Look at this number"โโ โisTrueโ"100% True"โ
โฐโโโโโโโโโโโโโโโโโโโดโโโฏโ โ 3โฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮ3467โโ โฐโโโโโโโดโโโโโโโโโโโโฏ
โ โ 4โฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮnullโโ
โ โ 5โฮฮฮ"The Next lines will be hidden"โโ
โ โช.....................................โโ
โ โฐโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏโ
โฐโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโฎโ
โ empty_arrayโฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮ[]โโ
โ empty_tableโฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮฮ{}โโ
โ testโ"This is some test data"โโฏ
โฐโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโฏ
```
> [!NOTE]
> This plugin is still under development. Breaking changes will be avoided
> unless deemed necessary.
## ๐ ๏ธ Features
* Algorithmic Graph Rendering
* Collapsible Units
* Jumping Between Linked Units
* Set Any Unit as Root
* Customizable Styles
* Support for Different Filetypes
## โ๏ธ Setup
[lazy.nvim](https://github.com/folke/lazy.nvim) (Suggested Setup)
```lua
return {
"Owen-Dechow/videre.nvim",
cmd = "Videre",
dependencies = {
"Owen-Dechow/graph_view_yaml_parser", -- Optional: add YAML support
"Owen-Dechow/graph_view_toml_parser", -- Optional: add TOML support
"a-usr/xml2lua.nvim", -- Optional | Experimental: add XML support
},
opts = {
round_units = false,
simple_statusline = true, -- If you are just starting out with Videre,
-- setting this to `false` will give you
-- descriptions of available keymaps.
}
}
```
[vim.pack](https://neovim.io/doc/user/pack.html#_plugin-manager)
```lua
vim.pack.add {
"https://github.com/Owen-Dechow/videre.nvim",
"https://github.com/Owen-Dechow/graph_view_yaml_parser", -- Optional: add YAML support
"https://github.com/Owen-Dechow/graph_view_toml_parser", -- Optional: add TOML support
"https://github.com/a-usr/xml2lua.nvim", -- Optional | Experimental: add XML support
}
require('videre').setup {
round_units = false,
simple_statusline = true, -- If you are just starting out with Videre,
-- setting this to `false` will give you
-- descriptions of available keymaps.
}
```
## ๐งฉ Options
```lua
{
-- set the window editor type
editor_type = "split", -- split, floating
-- configure the floating window style
floating_editor_style = {
margin = 2,
border = "double",
zindex = 10
},
-- Number of lines before collapsing
max_lines = 5,
-- Set the unit style to round
round_units = true,
-- Set the connection style to round
round_connections = true,
-- Disable line wrapping for the graph buffer
disable_line_wrap = true,
-- Set side scroll off for graph buffer
side_scrolloff = 20,
-- Change the string between the keymap and
-- description of callback within the statusline
-- FOR FONTS WITH LIGATURES TRY USING "๊" INSTEAD OF "=".
-- Other great options include "->", ": ", "=>", & " ".
keymap_desc_deliminator = "=",
-- Character used to represent empty space
space_char = "ฮ",
-- Use simple statusline instead of providing
-- descriptions of keymaps.
simple_statusline = true,
-- Show breadcrumbs to show where you are in
-- a Videre graph.
breadcrumbs = true,
-- Set the priority of keymaps for the quick
-- action keymap.
keymap_priorities = {
expand = 5,
link_forward = 4,
link_backward = 3,
link_down = 1,
link_up = 1,
collapse = 2,
set_as_root = 1,
},
-- Set the keys actions will be mapped to
keymaps = {
-- Expanding collapsed areas
expand = "E",
-- Collapse expanded areas
collapse = "E",
-- Jump to linked unit
link_forward = "L",
-- Jump back to unit parent
link_backward = "H",
-- Jump down a unit
link_down = "J",
-- Jump up a unit
link_up = "K",
-- Set current unit as root
set_as_root = "R",
-- Aliased to first priority available keymap
quick_action = "",
-- Close the window
close_window = "q"
-- Open the help menu
help = "g?",
}
}
```
## ๐ Running
To open a graph view, go to a json file and run `:Videre`.
The Videre window will open in a plit window to the right.
The Videre buffer will have a filetype of `Videre`.
## ๐๏ธ Different File Types
To enable different filetypes just add the correct parser plugin.
JsonGraphView will automatically detect the installed plugin and
allow you to explore that filetype.
Here are a list of supported parsers:
* JSON: ***builtin***
* YAML: [graph_view_yaml_parser](https://github.com/Owen-Dechow/graph_view_yaml_parser)
* TOML: [graph_view_toml_parser](https://github.com/Owen-Dechow/graph_view_toml_parser)
* XML **(Experimental)**: [xml2lua.nvim](https://github.com/a-usr/xml2lua.nvim)
If you would like to add a parser please open an issue or contribute a PR.
## ๐ฏ Future Goals
> [!NOTE]
> These goals are long term and will only be started after this
> plugin is deemed stable and there is enough support.
### ๐ Multiple Filetype Support
Add support for different filetypes such as YAML and TOML.
(Issue: [Multiple Filetype Support *#4*](https://github.com/Owen-Dechow/nvim_json_graph_view/issues/4))
### โ๏ธ File Editing
Add support for file editing directly form Videre.
(Issue: [File Editing *#5*](https://github.com/Owen-Dechow/nvim_json_graph_view/issues/5))
## ๐ License
This software is licensed under the MIT Standard License
[(Copyright (c) 2025 Owen Dechow)](https://github.com/Owen-Dechow/nvim_json_graph_view/blob/main/LICENSE).
## ๐ค Contributions
Contributions to this software are greatly appreciated.
Please read [CONTRIBUTING.md](https://github.com/Owen-Dechow/nvim_json_graph_view/blob/main/CONTRIBUTING.md)
for further guidelines.