yaml.nvim
#
Simple tools to help developers working YAML in Neovim.
Assuming yaml = require("yaml_nvim") for the Lua API:
| Command | Lua API | Description |
|---|---|---|
:YAMLView |
yaml.view() |
Shows the full path and value of the current key/value pair |
:YAMLYank [register] |
yaml.yank_all([register]) |
Yanks the full path and value of the current key/value pair. The default register is the unnamed one (") |
:YAMLYankKey [register] |
yaml.yank_key([register]) |
Yanks the full path of the key for the current key/value pair. The default register is the unnamed one (") |
:YAMLYankValue [regster] |
yaml.yank_value([register]) |
Yanks the value of the current key/value pair. The default register is the unnamed one (") |
:YAMLQuickfix |
yaml.quickfix() |
Generates a quickfix with key/value pairs |
:YAMLTelescope |
yaml.telescope() |
Full path key/value fuzzy finder via Telescope if installed |
Requirements#
- Neovim 0.9 or newer
nvim-treesitterwith YAML support
Telescope is optional.
What about older versions of Neovim?
Install#
With lazy.nvim#
{
"cuducos/yaml.nvim",
ft = { "yaml" }, -- optional
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-telescope/telescope.nvim", -- optional
},
}
With packer.nvim:#
use {
"cuducos/yaml.nvim",
ft = { "yaml" }, -- optional
requires = {
"nvim-treesitter/nvim-treesitter",
"nvim-telescope/telescope.nvim" -- optional
},
}
With vim-plug:#
Plug 'nvim-telescope/telescope.nvim' " optional
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'cuducos/yaml.nvim'
Configuration#
Showing the YAML path and value#
Neovim's winbar#
-- Get yaml key
vim.api.nvim_create_autocmd({ "FileType" }, {
pattern = { "yaml" },
callback = function()
vim.opt_local.winbar = [[%{%v:lua.require("yaml_nvim").get_yaml_key()%}]]
end,
})
-- Get yaml key and value
vim.api.nvim_create_autocmd({ "FileType" }, {
pattern = { "yaml" },
callback = function()
vim.opt_local.winbar = [[%{%v:lua.require("yaml_nvim").get_yaml_key_and_value()%}]]
end,
})
Neovim's statusline (with lualine.nvim)#
require("lualine").setup({
sections = {
lualine_x = { require("yaml_nvim").get_yaml_key_and_value },
-- etc
}
})
Reporting bugs and contributing#
There is a mini toolchain to help you test the plugin in isolation using a container. It requires:
| Command | Description |
|---|---|
./manage build |
Builds the container |
./manage test |
Runs the tests inside the container |
./manage nvim |
Opens the container's Neovim with a sample YAML file |