-
Notifications
You must be signed in to change notification settings - Fork 9
Vim Options
Yuriy Artemyev edited this page Jul 19, 2022
·
3 revisions
local Hydra = require("hydra")
local hint = [[
^ ^ Options
^
_v_ %{ve} virtual edit
_i_ %{list} invisible characters
_s_ %{spell} spell
_w_ %{wrap} wrap
_c_ %{cul} cursor line
_n_ %{nu} number
_r_ %{rnu} relative number
^
^^^^ _<Esc>_
]]
Hydra({
name = 'Options',
hint = hint,
config = {
color = 'amaranth',
invoke_on_body = true,
hint = {
border = 'rounded',
position = 'middle'
}
},
mode = {'n','x'},
body = '<leader>o',
heads = {
{ 'n', function()
if vim.o.number == true then
vim.o.number = false
else
vim.o.number = true
end
end, { desc = 'number' } },
{ 'r', function()
if vim.o.relativenumber == true then
vim.o.relativenumber = false
else
vim.o.number = true
vim.o.relativenumber = true
end
end, { desc = 'relativenumber' } },
{ 'v', function()
if vim.o.virtualedit == 'all' then
vim.o.virtualedit = 'block'
else
vim.o.virtualedit = 'all'
end
end, { desc = 'virtualedit' } },
{ 'i', function()
if vim.o.list == true then
vim.o.list = false
else
vim.o.list = true
end
end, { desc = 'show invisible' } },
{ 's', function()
if vim.o.spell == true then
vim.o.spell = false
else
vim.o.spell = true
end
end, { exit = true, desc = 'spell' } },
{ 'w', function()
if vim.o.wrap ~= true then
vim.o.wrap = true
-- Dealing with word wrap:
-- If cursor is inside very long line in the file than wraps
-- around several rows on the screen, then 'j' key moves you to
-- the next line in the file, but not to the next row on the
-- screen under your previous position as in other editors. These
-- bindings fixes this.
vim.keymap.set('n', 'k', function() return vim.v.count > 0 and 'k' or 'gk' end,
{ expr = true, desc = 'k or gk' })
vim.keymap.set('n', 'j', function() return vim.v.count > 0 and 'j' or 'gj' end,
{ expr = true, desc = 'j or gj' })
else
vim.o.wrap = false
vim.keymap.del('n', 'k')
vim.keymap.del('n', 'j')
end
end, { desc = 'wrap' } },
{ 'c', function()
if vim.o.cursorline == true then
vim.o.cursorline = false
else
vim.o.cursorline = true
end
end, { desc = 'cursor line' } },
{ '<Esc>', nil, { exit = true } }
}
})