overhauled plugins

This commit is contained in:
2025-01-21 22:58:44 +11:00
parent f99c76079c
commit 7a32c2fccf
13 changed files with 419 additions and 73 deletions

292
README.md
View File

@@ -1 +1,291 @@
Haelnorr's NeoVim config
# Haelnorr's NeoVim config
This is a list of all the plugins I use and what they do, along with some
documentation on keybinds and other usage.
## Contents
- [Plugins](#plugins)
- [Language server](#language-server)
- [Keymappings](#keymappings)
## Plugins
Plugins are managed using [lazy.nvim](https://github.com/folke/lazy.nvim)
- [Aerial](#aerial)
- [Comment](#comment)
- [Conform](#conform)
- [Feline](#feline)
- [Fugitive](#fugitive)
- [Gitsigns](#gitsigns)
- [Harpoon](#harpoon)
- [Markdown Preview](#markdown-preview)
- [NVIM Web Devicons](#nvim-web-devicons)
- [SUDA](#suda)
- [Surround](#surround)
- [Telescope](#telescope)
- [TMUXNav](#tmuxnav)
- [TODO Comments](#todo-comments)
- [Treesitter](#treesitter)
- [Trouble](#trouble)
- [Undotree](#undotree)
- [Vim be good](#vim-be-good)
- [Windows](#windows)
---
#### [Aerial](https://github.com/stevearc/aerial.nvim)
A code outline window for skimming and quick navigation
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `<leader>pa` | Toggle Aerial outline for current window | Normal |
| `{` | Cycle previous item | Inside Aerial |
| `}` | Cycle next item | Inside Aerial |
---
#### [Comment](https://github.com/numToStr/Comment.nvim)
Smart and powerful commenting plugin for NeoVim
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `gcc` | Toggles comment on current line using linewise comment | Normal |
| `gbc` | Toggles comment on current line using blockwise comment | Normal |
| `[count]gcc` | Toggles the number of line given as a prefix-count using linewise | Normal |
| `[count]gbc` | Toggles the number of line given as a prefix-count using blockwise | Normal |
| `gc[count]{motion}` | (Op-pending) Toggles the region using linewise comment | Normal |
| `gb[count]{motion}` | (Op-pending) Toggles the region using blockwise comment | Normal |
| `gc` | Toggles region using linewise comment | Visual |
| `gb` | Toggles region using blockwise comment | Visual |
| `gco` | Insert comment to next line and enter insert mode | Normal |
| `gcO` | Insert comment to previous line and enter insert mode | Normal |
| `gcA` | Insert comment to end of the current line and enter insert mode | Normal |
---
#### [Conform](https://github.com/stevearc/conform.nvim)
Lightweight yet powerful formatter plugin
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `<leader>f` | Formats entire file | Normal |
| `<leader>f` | Formats selection | Visual + Select |
---
#### [Feline](https://github.com/freddiehaddad/feline.nvim)
Customizable status line
---
#### [Fugitive](https://github.com/tpope/vim-fugitive)
Git integration
| Keybind | Functionality | Mode |
|---------|---------------|------|
|`<leader>gs` | Opens fugitive window | Normal |
| `gu` | `<cmd>diffget //2<CR>` | Normal |
| `gh` | `<cmd>diffget //3<CR>` | Normal |
| `<leader>s` | `:Git add -A` | (inside fugitive) |
| `<leader>c` | `:Git commit` | (inside fugitive) |
| `<leader>p` | `:Git push` | (inside fugitive) |
| `<leader>P` | `:Git pull --rebase` | (inside fugitive) |
| `<leader>t` | `:Git push -u origin <opts>` | (inside fugitive) |
---
#### [Gitsigns](https://github.com/lewis6991/gitsigns.nvim)
Customizable git diff decorators
---
#### [Harpoon](https://github.com/ThePrimeagen/harpoon/tree/harpoon2)
Quick swap between files
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `<leader>a` | Add current file | Normal |
| `Alt + e` | Toggle quick menu | Normal |
| `Alt + h` | Swap to file 1 | Normal |
| `Alt + j` | Swap to file 2 | Normal |
| `Alt + k` | Swap to file 3 | Normal |
| `Alt + l` | Swap to file 4 | Normal |
| `<leader> Alt + h` | Replace file 1 with current file | Normal |
| `<leader> Alt + j` | Replace file 2 with current file | Normal |
| `<leader> Alt + k` | Replace file 3 with current file | Normal |
| `<leader> Alt + l` | Replace file 4 with current file | Normal |
---
#### [Markdown Preview](https://github.com/iamcco/markdown-preview.nvim)
Live preview of markdown files in browser, with synced scrolling
**Usage:**
`:MarkdownPreview` - Opens preview window in new tab of browser
---
#### [NVIM Web Devicons](https://github.com/nvim-tree/nvim-web-devicons)
Provides Nerd font icons for other plugins to use
---
#### [SUDA](https://github.com/lambdalisue/vim-suda)
Write files using sudo inside NeoVim
**Usage:**
`:SudaRead` - Reread current file using sudo
`:SudaWrite` - Write current file using sudo
---
#### [Surround](https://github.com/kylechui/nvim-surround)
Add delete or remove surrounding pairs with Vim shortcuts
**Usage:**
The three "core" operations of add/delete/change can be done with the keymaps
ys{motion}{char}, ds{char}, and cs{target}{replacement}, respectively.
For the following examples, * will denote the cursor position:
```help
Old text Command New text
--------------------------------------------------------------------------------
surr*ound_words ysiw) (surround_words)
*make strings ys$" "make strings"
[delete ar*ound me!] ds] delete around me!
remove <b>HTML t*ags</b> dst remove HTML tags
'change quot*es' cs'" "change quotes"
<b>or tag* types</b> csth1<CR> <h1>or tag types</h1>
delete(functi*on calls) dsf function calls
```
---
#### [Telescope](https://github.com/nvim-telescope/telescope.nvim)
Extensible fuzzy finder for NeoVim
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `<leader>pf` | Find files | Normal |
| `Ctrl + p` | Find git files | Normal |
| `<leader>pws` | Search files for `<cword>` (word the cursor is on) | Normal |
| `<leader>pWs` | Search files for `<cWORD>` (WORD the cursor is on) | Normal |
| `<leader>ps` | Search files with grep | Normal |
| `<leader>vh` | Search builtin documentation | Normal |
---
#### [TMUXNav](https://github.com/christoomey/vim-tmux-navigator)
Integrated commands for navigating between tmux panes
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `Ctrl + h` | Navigate left | Normal |
| `Ctrl + j` | Navigate down | Normal |
| `Ctrl + k` | Navigate up | Normal |
| `Ctrl + l` | Navigate right | Normal |
| `Ctrl + \` | Navigate previous | Normal |
---
#### [TODO Comments](https://github.com/folke/todo-comments.nvim)
Decorate code with comment highlighting
**Usage:**
`KEYWORD: comment`
e.g. in Python:
(**NOTE:** the highlighting wont appear in the code snippet below)
```python
## List of available keywords
# TODO: this needs implementing
# HACK: hmmm, this looks a bit funky
# WARN: probably want to fix this soon
# PERF: perfectly optimised
# NOTE: this is a clever use of an example :)
# TEST: just making sure
```
`:TodoTelescope` - search project todos with Telescope
---
#### [Treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
Syntax highlighting, the best way
---
#### [Trouble](https://github.com/folke/trouble.nvim)
Error diagnostics
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `<leader>tt` | Toggle diagnostics tab | Normal |
| `<leader>tq` | Toggle quickfix list | Normal |
---
#### [Undotree](https://github.com/mbbill/undotree)
Undotree for NeoVim
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `<leader>u` | Open undotree | Normal |
---
#### [Vim be good](https://github.com/ThePrimeagen/vim-be-good)
Games for praciticing Vim motions
**Usage:**
`:VimBeGood`
---
#### [Windows](https://github.com/anuvyklack/windows.nvim)
Automatically minimise and maximise windows when focused
---
## Language Server
#### [NVIM-LSPConfig](https://github.com/neovim/nvim-lspconfig)
LSP has been setup with the following dependencies:
- williamboman/mason.nvim
- williamboman/mason-lspconfig.nvim
- hrsh7th/cmp-nvim-lsp
- hrsh7th/cmp-buffer
- hrsh7th/cmp-path
- hrsh7th/cmp-cmdline
- hrsh7th/nvim-cmp
- L3MON4D3/LuaSnip
- saadparwaiz1/cmp_luasnip
- j-hui/fidget.nvim
Language servers configured in `ensure_installed`:
- lua_ls
- bashls
- css_variables
- cssls
- cssmodules_ls
- docker_compose_language_service
- dockerls
- html
- jsonls
- pyright
| Keybind | Functionality | Mode |
|---------|---------------|------|
| `Ctrl + p` | auto-complete select prev item | Normal |
| `Ctrl + n` | auto-complete select next item | Normal |
| `Ctrl + y` | auto-complete confirm selected item | Normal |
| `Ctrl + space` | invoke auto-complete | Normal |
| `gd` | jumps to the definition of the symbol under the cursor | Normal |
| `K` | displays hover information about the symbol under the cursor | Normal |
| `<leader>vws` | lists all symbols in the current workspace matching {query} | Normal |
| `<leader>vd` | show diagnostics in a floating window | Normal |
| `<leader>vca` | selects a code action available at the current cursor (?) | Normal |
| `<leader>vrr` | lists all references to the symbol under the cursor | Normal |
| `<leader>vrn` | rename all references to the symbol under the cursor | Normal |
| `Ctrl + h` | displays signature information about the symbol under the cursor | Insert |
| `[d` | next diagnostic | Normal |
| `]d` | prev diagnostic | Normal |
## Keymappings
#### Leader key: `<Space>`
| Keybind | Behaviour | Normal | Visual | Select |
|---------|-----------|--------|--------|--------|
| `<leader>pv` | View directory of current file | &check; | &cross; | &cross; |
| `J` | Move selection down and autoindent | &cross; | &check; | &check; |
| `K` | Move selection up and autoindent | &cross; | &check; | &check; |
| `J` | Moves line below current line into sameline | &check; | &cross; | &cross; |
| `Ctrl + d` | Jump down page, keeping cursor centered (<C-d>zz) | &check; | &cross; | &cross; |
| `Ctrl + u` | Jump up page, keeping cursor centered (<C-u>zz) | &check; | &cross; | &cross; |
| `n` | (in search) Next item, keeping cursor centered | &check; | &cross; | &cross; |
| `N` | (in search) Prev item, keeping cursor centered | &check; | &cross; | &cross; |
| `<leader>p` | Replaces selection with buffer without overriding buffer | &cross; | &check; | &cross; |
| `<leader>y` | Yanks selection to system clipboard | &check; | &check; | &check; |
| `<leader>Y` | Yanks line to system clipboard | &check; | &cross; | &cross; |
| `<leader>d` | Deletes without replacing buffer, can be used with dd to delete line | &check; | &check; | &check; |
| `Ctrl + k` | Quickfix next | &check; | &cross; | &cross; |
| `Ctrl + j` | Quickfix prev | &check; | &cross; | &cross; |
| `<leader>k` | QF Location next | &check; | &cross; | &cross; |
| `<leader>j` | QF Location prev | &check; | &cross; | &cross; |
| `<leader>s` | search in file for symbol under cursor, and refactor | &check; | &cross; | &cross; |
| `<leader>x` | make file executable | &check; | &cross; | &cross; |
| `<leader>o` | Add new line below current line | &check; | &cross; | &cross; |
| `Ctrl + Q` | Toggle page right divider (colorcolumn) | &check; | &cross; | &cross; |

View File

@@ -1,35 +1,40 @@
{
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
"aerial.nvim": { "branch": "master", "commit": "4c959cf65c5420d54b24b61a77b681dcfca0bc57" },
"animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" },
"cellular-automaton.nvim": { "branch": "main", "commit": "11aea08aa084f9d523b0142c2cd9441b8ede09ed" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"feline.nvim": { "branch": "master", "commit": "3587f57480b88e8009df7b36dc84e9c7ff8f2c49" },
"conform.nvim": { "branch": "master", "commit": "6dc21d4ce050c2e592d9635b7983d67baf216e3d" },
"feline.nvim": { "branch": "main", "commit": "9f1313f61a75ec5ebe805fedd46bdc130c420963" },
"fidget.nvim": { "branch": "main", "commit": "a0abbf18084b77d28bc70e24752e4f4fd54aea17" },
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
"gitsigns.nvim": { "branch": "main", "commit": "abcd00a7d5bc1a9470cb21b023c575acade3e4db" },
"gitsigns.nvim": { "branch": "main", "commit": "f9170c3b74d94525201e5a40543d8924a2a883a7" },
"harpoon": { "branch": "harpoon2", "commit": "a84ab829eaf3678b586609888ef52f7779102263" },
"hererocks": { "branch": "master", "commit": "c9c5444dea1e07e005484014a8231aa667be30b6" },
"lazy.nvim": { "branch": "main", "commit": "d8f26efd456190241afd1b0f5235fe6fdba13d4a" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "97d9f1d3ad205dece6bcafd1d71cf1507608f3c7" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "e942edf5c85b6a2ab74059ea566cac5b3e1514a4" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"middleclass": { "branch": "master", "commit": "9fab4d5bca67262614960960ca35c4740eb2be2c" },
"nvim": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" },
"nvim-cmp": { "branch": "main", "commit": "8c82d0bd31299dbff7f8e780f5e06d2283de9678" },
"nvim-lspconfig": { "branch": "master", "commit": "0913481440219390969ab56a3c33089679365ef7" },
"nvim-surround": { "branch": "main", "commit": "9f0cb495f25bff32c936062d85046fbda0c43517" },
"nvim-treesitter": { "branch": "master", "commit": "c7dc251cddf2cdef1fa279fa797799728a5bfd78" },
"nvim-lspconfig": { "branch": "master", "commit": "3d4180a5ef085b9da249919cce01c62b53c07d6a" },
"nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" },
"nvim-treesitter": { "branch": "master", "commit": "07bd1b53bf465e42d53253b48b7437892d6c45e8" },
"nvim-web-devicons": { "branch": "master", "commit": "aafa5c187a15701a7299a392b907ec15d9a7075f" },
"plenary": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" },
"plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" },
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
"todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" },
"trouble.nvim": { "branch": "main", "commit": "4d36b8979287f5facc03fd6d955ace67db667e1d" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"trouble.nvim": { "branch": "main", "commit": "50481f414bd3c1a40122c1d759d7e424d5fafe84" },
"undotree": { "branch": "master", "commit": "2556c6800b210b2096b55b66e74b4cc1d9ebbe4f" },
"vim-be-good": { "branch": "master", "commit": "0ae3de14eb8efc6effe7704b5e46495e91931cc5" },
"vim-fugitive": { "branch": "master", "commit": "174230d6a7f2df94705a7ffd8d5413e27ec10a80" },
"vim-fugitive": { "branch": "master", "commit": "d74a7cff4cfcf84f83cc7eccfa365488f3bbabc2" },
"vim-suda": { "branch": "master", "commit": "9adda7d195222d4e2854efb2a88005a120296c47" },
"vim-tmux-navigator": { "branch": "master", "commit": "d847ea942a5bb4d4fab6efebc9f30d787fd96e65" },
"zen-mode.nvim": { "branch": "main", "commit": "863f150ca321b3dd8aa1a2b69b5f411a220e144f" }
"windows.nvim": { "branch": "main", "commit": "c7492552b23d0ab30325e90b56066ec51242adc8" }
}

View File

@@ -8,7 +8,7 @@ local HaelnorrGroup = augroup('Haelnorr', {})
local autocmd = vim.api.nvim_create_autocmd
function R(name)
require("plenary.reload").reload_module(name)
require("plenary.reload").reload_module(name)
end
autocmd('LspAttach', {

View File

@@ -0,0 +1,21 @@
return {
"stevearc/aerial.nvim",
opts = {},
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-tree/nvim-web-devicons"
},
config = function()
require("aerial").setup({
on_attach = function(bufnr)
vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", { buffer = bufnr })
vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", { buffer = bufnr })
end,
layout = {
default_direction = "prefer_left",
min_width = 10
}
})
vim.keymap.set("n", "<leader>pa", "<cmd>AerialToggle!<CR>")
end
}

View File

@@ -0,0 +1,3 @@
return {
"numToStr/Comment.nvim",
}

View File

@@ -0,0 +1,48 @@
return {
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
keys = {
{
-- Customize or remove this keymap to your liking
"<leader>f",
function()
require("conform").format({ async = true })
end,
mode = "",
desc = "Format buffer",
},
},
-- This will provide type hinting with LuaLS
---@module "conform"
---@type conform.setupOpts
opts = {
-- Define your formatters
formatters_by_ft = {
lua = { "stylua" },
python = { "isort", "black" },
javascript = { "prettierd", "prettier", stop_after_first = true },
typescript = { "prettierd", "prettier", stop_after_first = true },
typescriptreact = { "prettierd", "prettier", stop_after_first = true },
json = { "prettierd", "prettier", stop_after_first = true },
html = { "prettierd", "prettier", stop_after_first = true },
css = { "prettierd", "prettier", stop_after_first = true },
},
-- Set default options
default_format_opts = {
lsp_format = "fallback",
},
-- Set up format-on-save
format_on_save = { timeout_ms = 500 },
-- Customize formatters
formatters = {
shfmt = {
prepend_args = { "-i", "2" },
},
},
},
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
}

View File

@@ -1,5 +1,5 @@
return {
'feline-nvim/feline.nvim',
'freddiehaddad/feline.nvim',
config = function ()
local ctp_feline = require('catppuccin.groups.integrations.feline')

View File

@@ -27,8 +27,6 @@ return {
require("mason-lspconfig").setup({
ensure_installed = {
"lua_ls",
"ansiblels",
"astro",
"bashls",
"css_variables",
"cssls",
@@ -38,7 +36,6 @@ return {
"html",
"jsonls",
"pyright",
"tailwindcss",
},
handlers = {
function(server_name) -- default handler (optional)

View File

@@ -0,0 +1,9 @@
return {
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
build = "cd app && yarn install",
init = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
}

View File

@@ -1,29 +0,0 @@
return {
{
"L3MON4D3/LuaSnip",
-- follow latest release.
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
-- install jsregexp (optional!).
build = "make install_jsregexp",
dependencies = { "rafamadriz/friendly-snippets" },
config = function()
local ls = require("luasnip")
ls.filetype_extend("javascript", { "jsdoc" })
--- TODO: What is expand?
vim.keymap.set({"i"}, "<C-s>e", function() ls.expand() end, {silent = true})
vim.keymap.set({"i", "s"}, "<C-s>;", function() ls.jump(1) end, {silent = true})
vim.keymap.set({"i", "s"}, "<C-s>,", function() ls.jump(-1) end, {silent = true})
vim.keymap.set({"i", "s"}, "<C-E>", function()
if ls.choice_active() then
ls.change_choice(1)
end
end, {silent = true})
end,
}
}

View File

@@ -0,0 +1,13 @@
return {
"anuvyklack/windows.nvim",
dependencies = {
"anuvyklack/middleclass",
"anuvyklack/animation.nvim"
},
config = function()
vim.o.winwidth = 10
vim.o.winminwidth = 10
vim.o.equalalways = false
require('windows').setup()
end
}

View File

@@ -1,19 +0,0 @@
return {
"folke/zen-mode.nvim",
config = function()
vim.keymap.set("n", "<leader>zz", function()
require("zen-mode").setup {
window = {
width = 90,
options = { }
},
}
require("zen-mode").toggle()
vim.wo.wrap = false
vim.wo.number = true
vim.wo.rnu = true
end)
end
}

View File

@@ -16,15 +16,24 @@ vim.keymap.set("n", "N", "Nzzzv")
vim.keymap.set("x", "<leader>p", [["_dP]])
-- yanks to system clipboard
vim.keymap.set({"n", "v"}, "<leader>y", [["+y]])
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]])
vim.keymap.set("n", "<leader>Y", [["+Y]])
-- pretty sure this deletes without replacing buffer but idk
vim.keymap.set({"n", "v"}, "<leader>d", [["_d]])
-- deletes without replacing buffer
vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]])
-- idk something with tmux, ill come back to this
vim.keymap.set("n", "<C-f>", "<cmd>silent !tmux neww tmux-sessionizer<CR>")
vim.keymap.set("n", "<leader>f", vim.lsp.buf.format)
-- formats file using LSP
-- vim.keymap.set("n", "<leader>f", vim.lsp.buf.format)
vim.keymap.set("", "<leader>f", function()
require("conform").format({ async = true }, function(err)
if not err then
local mode = vim.api.nvim_get_mode().mode
if vim.startswith(string.lower(mode), "v") then
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", true)
end
end
end)
end, { desc = "Format code" })
vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz")
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz")
@@ -43,4 +52,3 @@ vim.keymap.set("n", "<C-Q>", function()
vim.opt.colorcolumn = ""
end
end)