Skip to content

which‐key.nvim support

Vladyslav Rehan edited this page Dec 7, 2024 · 5 revisions

Since the vimtex is written in vim script, it cannot provide key bindings with Lua descriptions. To solve this problem we have to add key binds ourself. For example, if you use lazy.nvim:

return {
	'lervag/vimtex',
	lazy = true,
	ft = 'tex',
	enabled = true,

	config = function()
		vim.cmd("set suffixesadd+=.tex")

		vim.g.vimtex_mappings_enabled = false
		vim.g.vimtex_imaps_enabled = false
		local augroup = vim.api.nvim_create_augroup('vimtexConfig', {})
		vim.api.nvim_create_autocmd('FileType', {
			pattern = {"tex"},
			group = augroup,
			callback = function(ev)
				local wk = require 'which-key'
				wk.add({
					buffer = ev.buf,
					{ "<localleader>l", group = "VimTeX",
						icon = {icon = '', color = 'green'},
						mode = 'nx',
					},
					{
						mode = 'n',
						{ "<localleader>ll", "<plug>(vimtex-compile)",
							desc = "Compile",
							icon = {icon = '', color = 'green'},
						},
						{ "<localleader>lL", "<plug>(vimtex-compile-selected)",
							desc = "Compile selected",
							icon = {icon = '', color = 'green'},
							mode = 'nx',
						},
						{ "<localleader>li", "<plug>(vimtex-info)",
							desc = "Information",
							icon = {icon = '', color = 'purple'},
						},
						{ "<localleader>lI", "<plug>(vimtex-info-full)",
							desc = "Full information",
							icon = {icon = '󰙎', color = 'purple'},
						},
						{ "<localleader>lt", "<plug>(vimtex-toc-open)",
							desc = "Table of Contents",
							icon = {icon = '󰠶', color = 'purple'},
						},
						{ "<localleader>lT", "<plug>(vimtex-toc-toggle)",
							desc = "Toggle table of Contents",
							icon = {icon = '󰠶', color = 'purple'},
						},
						{ "<localleader>lq", "<plug>(vimtex-log)",
							desc = "Log",
							icon = {icon = '', color = 'purple'},
						},
						{ "<localleader>lv", "<plug>(vimtex-view)",
							desc = "View",
							icon = {icon = '', color = 'green'},
						},
						{ "<localleader>lr", "<plug>(vimtex-reverse-search)",
							desc = "Reverse search",
							icon = {icon = '', color = 'purple'},
						},
						{ "<localleader>lk", "<plug>(vimtex-stop)",
							desc = "Stop",
							icon = {icon = '', color = 'red'},
						},
						{ "<localleader>lK", "<plug>(vimtex-stop-all)",
							desc = "Stop all",
							icon = {icon = '󰓛', color = 'red'},
						},
						{ "<localleader>le", "<plug>(vimtex-errors)",
							desc = "Errors",
							icon = {icon = '', color = 'red'},
						},
						{ "<localleader>lo", "<plug>(vimtex-compile-output)",
							desc = "Compile output",
							icon = {icon = '', color = 'purple'},
						},
						{ "<localleader>lg", "<plug>(vimtex-status)",
							desc = "Status",
							icon = {icon = '󱖫', color = 'purple'},
						},
						{ "<localleader>lG", "<plug>(vimtex-status-full)",
							desc = "Full status",
							icon = {icon = '󱖫', color = 'purple'},
						},
						{ "<localleader>lc", "<plug>(vimtex-clean)",
							desc = "Clean",
							icon = {icon = '󰃢', color = 'orange'},
						},
						{ "<localleader>lh", "<Cmd>VimtexClearCache ALL<cr>",
							desc = "Clear all cache",
							icon = {icon = '󰃢', color = 'grey'},
						},
						{ "<localleader>lC", "<plug>(vimtex-clean-full)",
							desc = "Full clean",
							icon = {icon = '󰃢', color = 'red'},
						},
						{ "<localleader>lx", "<plug>(vimtex-reload)",
							desc = "Reload",
							icon = {icon = '󰑓', color = 'green'},
						},
						{ "<localleader>lX", "<plug>(vimtex-reload-state)",
							desc = "Reload state",
							icon = {icon = '󰑓', color = 'cyan'},
						},
						{ "<localleader>lm", "<plug>(vimtex-imaps-list)",
							desc = "Input mappings",
							icon = {icon = '', color = 'purple'},
						},
						{ "<localleader>ls", "<plug>(vimtex-toggle-main)",
							desc = "Toggle main",
							icon = {icon = '󱪚', color = 'green'},
						},
						{ "<localleader>la", "<plug>(vimtex-context-menu)",
							desc = "Context menu",
							icon = {icon = '󰮫', color = 'purple'},
						},
						{ "ds", group = '+surrounding',
							icon = {icon = '󰗅', color = 'green'},
						},
						{ "dse", "<plug>(vimtex-env-delete)",
							desc = "environment",
							icon = {icon = '', color = 'red'},
						},
						{ "dsc", "<plug>(vimtex-cmd-delete)",
							desc = "command",
							icon = {icon = '', color = 'red'},
						},
						{ "ds$", "<plug>(vimtex-env-delete-math)",
							desc = "math",
							icon = {icon = '󰿈', color = 'red'},
						},
						{ "dsd", "<plug>(vimtex-delim-delete)",
							desc = "delimeter",
							icon = {icon = '󰅩', color = 'red'},
						},
						{ "cs", group = '+surrounding',
							icon = {icon = '󰗅', color = 'green'},
						},
						{ "cse", "<plug>(vimtex-env-change)",
							desc = "environment",
							icon = {icon = '', color = 'blue'},
						},
						{ "csc", "<plug>(vimtex-cmd-change)",
							desc = "command",
							icon = {icon = '', color = 'blue'},
						},
						{ "cs$", "<plug>(vimtex-env-change-math)",
							desc = "math environment",
							icon = {icon = '󰿈', color = 'blue'},
						},
						{ "csd", "<plug>(vimtex-delim-change-math)",
							desc = "delimeter",
							icon = {icon = '󰅩', color = 'blue'},
						},
						{ "ts", group = '+surrounding',
							icon = {icon = '󰗅', color = 'green'},
							mode = 'nx',
						},
						{ "tsf", "<plug>(vimtex-cmd-toggle-frac)",
							desc = "fraction",
							icon = {icon = '󱦒', color = 'yellow'},
							mode = 'nx',
						},
						{ "tsc", "<plug>(vimtex-cmd-toggle-star)",
							desc = "command",
							icon = {icon = '', color = 'yellow'},
						},
						{ "tse", "<plug>(vimtex-env-toggle-star)",
							desc = "environment",
							icon = {icon = '', color = 'yellow'},
						},
						{ "ts$", "<plug>(vimtex-env-toggle-math)",
							desc = "math environment",
							icon = {icon = '󰿈', color = 'yellow'},
						},
						{ "tsb", "<plug>(vimtex-env-toggle-break)",
							desc = "break",
							icon = {icon = '󰿈', color = 'yellow'},
						},
						{ "<F6>", "<plug>(vimtex-env-surround-line)",
							desc = "Surround line with environment",
							icon = {icon = '', color = 'purple'},
						},
						{ "<F6>", "<plug>(vimtex-env-surround-visual)",
							desc = "Surround selection with environment",
							icon = {icon = '', color = 'purple'},
							mode = 'x'
						},
						{ "tsd", "<plug>(vimtex-delim-toggle-modifier)",
							desc = "delimeter",
							icon = {icon = '󰅩', color = 'yellow'},
							mode = 'nx',
						},
						{ "tsD", "<plug>(vimtex-delim-toggle-modifier-reverse)",
							desc = "revers surrounding delimeter",
							icon = {icon = '󰅩', color = 'yellow'},
							mode = 'nx',
						},
						{ "<F7>", "<plug>(vimtex-cmd-create)",
							desc = "Create command",
							icon = {icon = '󰅩', color = 'green'},
							mode = 'nxi',
						},
						{ "]]", "<plug>(vimtex-close-delimeter)",
							desc = "Close delimeter",
							icon = {icon = '󰅩', color = 'green'},
							mode = 'i',
						},
						{ "<F8>", "<plug>(vimtex-delim-add-modifiers)",
							desc = "Add \\left and \\right",
							icon = {icon = '󰅩', color = 'green'},
							mode = 'n',
						},
					},
					{ mode = 'xo',
						{ "ac", "<plug>(vimtex-ac)",
							desc = "command",
							icon = {icon = '', color = 'orange'},
						},
						{ "ic", "<plug>(vimtex-ic)",
							desc = "command",
							icon = {icon = '', color = 'orange'},
						},
						{ "ad", "<plug>(vimtex-ad)",
							desc = "delimiter",
							icon = {icon = '󰅩', color = 'orange'},
						},
						{ "id", "<plug>(vimtex-id)",
							desc = "delimiter",
							icon = {icon = '󰅩', color = 'orange'},
						},
						{ "ae", "<plug>(vimtex-ae)",
							desc = "environment",
							icon = {icon = '', color = 'orange'},
						},
						{ "ie", "<plug>(vimtex-ie)",
							desc = "environment",
							icon = {icon = '', color = 'orange'},
						},
						{ "a$", "<plug>(vimtex-a$)",
							desc = "math",
							icon = {icon = '󰿈', color = 'orange'},
						},
						{ "i$", "<plug>(vimtex-i$)",
							desc = "math",
							icon = {icon = '󰿈', color = 'orange'},
						},
						{ "aP", "<plug>(vimtex-aP)",
							desc = "section",
							icon = {icon = '󰚟', color = 'orange'},
						},
						{ "iP", "<plug>(vimtex-iP)",
							desc = "section",
							icon = {icon = '󰚟', color = 'orange'},
						},
						{ "am", "<plug>(vimtex-am)",
							desc = "item",
							icon = {icon = '', color = 'orange'},
						},
						{ "im", "<plug>(vimtex-im)",
							desc = "item",
							icon = {icon = '', color = 'orange'},
						},
					},
					{
						mode = 'nxo',
						{ "%", "<plug>(vimtex-%)",
							desc = "Matching pair",
							icon = {icon = '󰐱', color = 'cyan'},
						},
						{ "]]", "<plug>(vimtex-]])",
							desc = "Next end of a section",
							icon = {icon = '󰚟', color = 'cyan'},
						},
						{ "][", "<plug>(vimtex-][)",
							desc = "Next beginning of a section",
							icon = {icon = '󰚟', color = 'cyan'},
						},
						{ "[]", "<plug>(vimtex-[])",
							desc = "Previous end of a section",
							icon = {icon = '󰚟', color = 'cyan'},
						},
						{ "[[", "<plug>(vimtex-[[)",
							desc = "Previous beginning of a section",
							icon = {icon = '󰚟', color = 'cyan'},
						},
						{ "]m", "<plug>(vimtex-]m)",
							desc = "Next start of an environment",
							icon = {icon = '', color = 'cyan'},
						},
						{ "]M", "<plug>(vimtex-]M)",
							desc = "Next end of an environment",
							icon = {icon = '', color = 'cyan'},
						},
						{ "[m", "<plug>(vimtex-[m)",
							desc = "Previous start of an environment",
							icon = {icon = '', color = 'cyan'},
						},
						{ "[M", "<plug>(vimtex-[M)",
							desc = "Previous end of an environment",
							icon = {icon = '', color = 'cyan'},
						},
						{ "]n", "<plug>(vimtex-]n)",
							desc = "Next start of math",
							icon = {icon = '󰿈', color = 'cyan'},
						},
						{ "]N", "<plug>(vimtex-]N)",
							desc = "Next end of math",
							icon = {icon = '󰿈', color = 'cyan'},
						},
						{ "[n", "<plug>(vimtex-[n)",
							desc = "Previous start of math",
							icon = {icon = '󰿈', color = 'cyan'},
						},
						{ "[N", "<plug>(vimtex-[N)",
							desc = "Previous end of math",
							icon = {icon = '󰿈', color = 'cyan'},
						},
						{ "]r", "<plug>(vimtex-]r)",
							desc = "Next start of frame environment",
							icon = {icon = '󰹉', color = 'cyan'},
						},
						{ "]R", "<plug>(vimtex-]R)",
							desc = "Next end of frame environment",
							icon = {icon = '󰹉', color = 'cyan'},
						},
						{ "[r", "<plug>(vimtex-[r)",
							desc = "Previous start of frame environment",
							icon = {icon = '󰹉', color = 'cyan'},
						},
						{ "[R", "<plug>(vimtex-[R)",
							desc = "Previous end of frame environment",
							icon = {icon = '󰹉', color = 'cyan'},
						},
						{ "]/", "<plug>(vimtex-]/)",
							desc = "Next start of a comment",
							icon = {icon = '', color = 'cyan'},
						},
						{ "]*", "<plug>(vimtex-]star)",
							desc = "Next end of a comment",
							icon = {icon = '', color = 'cyan'},
						},
						{ "[/", "<plug>(vimtex-[/)",
							desc = "Previous start of a comment",
							icon = {icon = '', color = 'cyan'},
						},
						{ "[*", "<plug>(vimtex-[star)",
							desc = "Previous end of a comment",
							icon = {icon = '', color = 'cyan'},
						},
					},
					{ "K", "<plug>(vimtex-doc-package)",
						desc = "See package documentation",
						icon = {icon = '󱔗', color = 'azure'},
					}
				})
			end,
		})
	end,
}

Clone this wiki locally