```lua ---@return string function M.get_visual_selection() local start_pos = vim.fn.getpos("'<") local end_pos = vim.fn.getpos("'>") local lines = vim.api.nvim_buf_get_lines(0, start_pos[2] - 1, end_pos[2], false) if #lines == 1 then lines[1] = lines[1]:sub(start_pos[3], end_pos[3]) else lines[1] = lines[1]:sub(start_pos[3]) lines[#lines] = lines[#lines]:sub(1, end_pos[3]) end return table.concat(lines, "\n") end ```