dots/files/.config/vis/visrc.lua
2026-07-30 15:47:38 +02:00

92 lines
2.5 KiB
Lua

require("vis")
local plug = (function() if not pcall(require, 'plugins/vis-plug') then
os.execute('git clone --quiet https://github.com/erf/vis-plug ' ..
(os.getenv('XDG_CONFIG_HOME') or os.getenv('HOME') .. '/.config')
.. '/vis/plugins/vis-plug')
end return require('plugins/vis-plug') end)()
local plugins = {
{ 'erf/vis-sneak' },
{ 'kupospelov/vis-ctags' },
{ 'https://codeberg.org/luxanna/vis-autoclose' },
{ 'http://forge.kentoj.de/kento2/vis-lspc.git' }
}
plug.init(plugins, true)
vis.events.subscribe(vis.events.INIT, function()
--vis:command("set theme kento2")
vis:command("set theme plain2")
vis.options.autoindent = true
vis.options.breakat = " "
vis:map(vis.modes.NORMAL, 'h', 'gh')
vis:map(vis.modes.NORMAL, 'j', 'gj')
vis:map(vis.modes.NORMAL, 'k', 'gk')
vis:map(vis.modes.NORMAL, 'l', 'gl')
vis:map(vis.modes.NORMAL, '0', 'g0')
vis:map(vis.modes.VISUAL, ' y', '"+y')
vis:map(vis.modes.VISUAL, ' p', '"+p')
vis:map(vis.modes.VISUAL, ' d', '"+d')
vis:map(vis.modes.VISUAL, ' x', '"+x')
vis:map(vis.modes.NORMAL, ' y', '"+y')
vis:map(vis.modes.NORMAL, ' p', '"+p')
vis:map(vis.modes.NORMAL, ' d', '"+d')
vis:map(vis.modes.NORMAL, ' x', '"+x')
vis:command_register("grep", function(argv, force, win, selection, range)
local text = argv[1]
if selection.anchored then
text = win.file:content(selection.range)
end
if not text then
return false
end
local escaped = text:gsub("'","'\\''")
local proc = io.popen("grep -n -I -R -- "..escaped .." | tr '\t' ' ' | fzy")
if not proc then return false end
local sel = proc:read("*a") or ""
proc:close();
local path, line = sel:match("^(.-):(%d+):")
if not path or not line then return false end
selection:remove()
selection.anchored = false
vis:command("e "..path)
vis.win.selection:to(tonumber(line), 1)
vis:redraw()
return true
end)
vis:map(vis.modes.VISUAL, ' g', function()
vis:command("grep")
vis:redraw()
end)
vis:map(vis.modes.NORMAL, ' f', function()
vis:command("!make; read a")
vis:redraw()
end)
vis:map(vis.modes.NORMAL, 'mm', function()
vis:command("!make; read a")
vis:redraw()
end)
vis:map(vis.modes.NORMAL, 'mc', function()
vis:command("!make check; read a")
vis:redraw()
end)
vis:map(vis.modes.NORMAL, 'mt', function()
vis:command("!make test; read a")
vis:redraw()
end)
end)
vis.events.subscribe(vis.events.WIN_OPEN, function(win)
win.options.tabwidth = 2
win.options.expandtab = true
-- win.options.wrapcolumn = 80
end)