From 80e8521c8361cd10be184671110b2d5aa54aeb4d Mon Sep 17 00:00:00 2001 From: Nicholas Novak <34256932+NickyBoy89@users.noreply.github.com> Date: Thu, 29 Dec 2022 21:59:29 -0800 Subject: [PATCH] Moved config over to lua --- nvim/.config/nvim/.gitignore | 1 + nvim/.config/nvim/init.lua | 530 +++++++++++++++++++++++++++++++++++ nvim/.config/nvim/init.vim | 323 --------------------- 3 files changed, 531 insertions(+), 323 deletions(-) create mode 100644 nvim/.config/nvim/.gitignore create mode 100644 nvim/.config/nvim/init.lua delete mode 100644 nvim/.config/nvim/init.vim diff --git a/nvim/.config/nvim/.gitignore b/nvim/.config/nvim/.gitignore new file mode 100644 index 0000000..d7ad043 --- /dev/null +++ b/nvim/.config/nvim/.gitignore @@ -0,0 +1 @@ +plugin/ diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua new file mode 100644 index 0000000..d034959 --- /dev/null +++ b/nvim/.config/nvim/init.lua @@ -0,0 +1,530 @@ +require('packer').startup(function(use) + -- Package manager + use 'wbthomason/packer.nvim' + + -- LSP Configuration + use { + 'neovim/nvim-lspconfig', + requires = { + -- Automatically install LSPs to stdpath for neovim + 'williamboman/mason.nvim', + 'williamboman/mason-lspconfig.nvim', + + -- Useful status updates for LSP + 'j-hui/fidget.nvim', + + -- Additional lua configuration, makes nvim stuff amazing + 'folke/neodev.nvim', + }, + } + + -- Autocompletion + use { + 'hrsh7th/nvim-cmp', + requires = { + 'hrsh7th/cmp-nvim-lsp', + 'L3MON4D3/LuaSnip', + 'saadparwaiz1/cmp_luasnip' + }, + } + + -- Highlight, edit, and navigate code + use { + 'nvim-treesitter/nvim-treesitter', + run = function() + pcall(require('nvim-treesitter.install').update { with_sync = true }) + end, + } + + use { -- Additional text objects via treesitter + 'nvim-treesitter/nvim-treesitter-textobjects', + after = 'nvim-treesitter', + } + + -- [Language Syntax] + use 'karolbelina/uxntal.vim' + + -- [Language Development] + use { + 'fatih/vim-go', + cmd = 'GoUpdateBinaries', + } + + use 'rust-lang/rust.vim' + + use 'Julian/lean.nvim' + + -- [Auto Formatting] + + -- Google Java auto-format + use 'google/vim-maktaba' + use 'google/vim-codefmt' + use 'google/vim-glaive' + + -- Python auto-format + use 'psf/black' + + -- LaTeX + use 'lervag/vimtex' + use 'KeitaNakamura/tex-conceal.vim' + + + -- Git related plugins + use 'tpope/vim-fugitive' + use 'tpope/vim-rhubarb' + use 'lewis6991/gitsigns.nvim' + + -- Colorscheme + use 'morhetz/gruvbox' + + -- Fancier statusline + use 'nvim-lualine/lualine.nvim' + + use 'lukas-reineke/indent-blankline.nvim' -- Add indentation guides even on blank lines + use 'numToStr/Comment.nvim' -- "gc" to comment visual regions/lines + --use 'tpope/vim-sleuth' -- Detect tabstop and shiftwidth automatically + + -- Fuzzy Finder (files, lsp, etc) + use { + 'nvim-telescope/telescope.nvim', + branch = '0.1.x', + requires = { 'nvim-lua/plenary.nvim' }, + } + + -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available + use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = vim.fn.executable 'make' == 1 } + + -- Add custom plugins to packer from ~/.config/nvim/lua/custom/plugins.lua + local has_plugins, plugins = pcall(require, 'custom.plugins') + if has_plugins then + plugins(use) + end +end) + +-- Automatically source and re-compile packer whenever you save this init.lua +local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true }) +vim.api.nvim_create_autocmd('BufWritePost', { + command = 'source | silent! LspStop | silent! LspStart | PackerCompile', + group = packer_group, + pattern = vim.fn.expand '$MYVIMRC', +}) + +local texfiles = vim.api.nvim_create_augroup('texfiles', { clear = true}) + +vim.api.nvim_create_autocmd('FileType', { + command = 'setlocal spell colorcolumn=81 conceallevel=1', + group = texfiles, + pattern = { 'tex' }, +}) + +local autoformats = vim.api.nvim_create_augroup( + 'autoformat_settings', + { clear = true } +) +vim.api.nvim_create_autocmd('FileType', { + command = 'AutoFormatBuffer google-java-format', + group = autoformats, + pattern = { 'java' }, +}) +vim.api.nvim_create_autocmd('BufWritePre', { + command = 'Black', + group = autoformats, + pattern = { '*.py' }, +}) + +-- Filetype Detection +vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, { + command = 'set filetype=mips', + pattern = { '*.asm' }, +}) +vim.api.nvim_create_autocmd('BufRead', { + command = 'set filetype=lean', + pattern = { '*.lean' }, +}) + +vim.g.tex_conceal = 'abdmg' +vim.cmd.highlight({ 'Conceal', 'ctermbg=none' }) + +-- Settings for Plugins + +-- Go development options +vim.g.go_highlight_fields = 1 +vim.g.go_highlight_functions = 1 +vim.g.go_highlight_function_calls = 1 +vim.g.go_highlight_extra_types = 1 +vim.g.go_highlight_operators = 1 +vim.g.go_auto_type_info = 1 + +-- Vimtex configuration +vim.g.vimtex_view_method = 'zathura' +vim.g.vimtex_quickfix_mode=0 +vim.g.vimtex_compiler_latexmk = { + options = { + '-shell-escape', + '-verbose', + '-file-line-error', + '-synctex=1', + '-interaction=nonstopmode', + } +} + +vim.g.python_highlight_all = 1 + +-- Normal Settings + +-- Make line numbers default +vim.wo.number = true + +vim.o.colorcolumn = 80 +vim.o.background = "dark" +vim.o.clipboard = "unnamedplus" + +-- Enable mouse mode +vim.o.mouse = 'a' + +-- Enable break indent +vim.o.breakindent = true + +-- Save undo history +vim.o.undofile = true + +-- Case insensitive searching UNLESS /C or capital in search +vim.o.incsearch = true +vim.o.ignorecase = true +vim.o.smartcase = true +vim.o.gdefault = true + +-- Decrease update time +vim.o.updatetime = 250 + +-- Add a gutter so that things don't jump around +vim.wo.signcolumn = 'yes' + +-- Prevent markdown from collapsing down +vim.o.foldenable = false + +-- Tabs instead of spaces +-- :h tabstop is the number of spaces for a tab character +-- :h expandtab expands tabs into spaces +-- :h shiftwidth is the number of spaces to use as indentation +vim.o.expandtab = true +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 + +-- Set colorscheme +vim.o.termguicolors = true +vim.cmd [[colorscheme gruvbox]] + +-- Set completeopt to have a better completion experience +vim.o.completeopt = 'menuone,noinsert,noselect' + +-- [[ Basic Keymaps ]] +-- Set as the leader key +-- See `:help mapleader` +-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +-- Keymaps for better default experience +-- See `:help vim.keymap.set()` +vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) + +-- Remap for dealing with word wrap +vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) +vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) + +-- [[ Highlight on yank ]] +-- See `:help vim.highlight.on_yank()` +local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) +vim.api.nvim_create_autocmd('TextYankPost', { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, + pattern = '*', +}) + +-- Set lualine as statusline +-- See `:help lualine.txt` +require('lualine').setup { + options = { + icons_enabled = false, + theme = 'gruvbox', + component_separators = '|', + section_separators = '', + }, +} + +-- Enable Comment.nvim +require('Comment').setup() + +-- Enable `lukas-reineke/indent-blankline.nvim` +-- See `:help indent_blankline.txt` +require('indent_blankline').setup { + char = '┊', + show_trailing_blankline_indent = false, +} + +-- Gitsigns +-- See `:help gitsigns.txt` +require('gitsigns').setup { + signs = { + add = { text = '+' }, + change = { text = '~' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + }, +} + +-- [[ Configure Telescope ]] +-- See `:help telescope` and `:help telescope.setup()` +require('telescope').setup { + defaults = { + mappings = { + i = { + [''] = false, + [''] = false, + }, + }, + }, +} + +-- Enable telescope fzf native, if installed +pcall(require('telescope').load_extension, 'fzf') + +-- See `:help telescope.builtin` +vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) +vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) +vim.keymap.set('n', '/', function() + -- You can pass additional configuration to telescope to change theme, layout, etc. + require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false, + }) +end, { desc = '[/] Fuzzily search in current buffer]' }) + +vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) +vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) +vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) +vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) +vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) + +-- [[ Configure Treesitter ]] +-- See `:help nvim-treesitter` +require('nvim-treesitter.configs').setup { + -- Add languages to be installed here that you want installed for treesitter + ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'typescript', 'help' }, + + highlight = { enable = true }, + indent = { enable = true, disable = { 'python' } }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = '', + node_incremental = '', + scope_incremental = '', + node_decremental = '', + }, + }, + textobjects = { + select = { + enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ['aa'] = '@parameter.outer', + ['ia'] = '@parameter.inner', + ['af'] = '@function.outer', + ['if'] = '@function.inner', + ['ac'] = '@class.outer', + ['ic'] = '@class.inner', + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + [']m'] = '@function.outer', + [']]'] = '@class.outer', + }, + goto_next_end = { + [']M'] = '@function.outer', + [']['] = '@class.outer', + }, + goto_previous_start = { + ['[m'] = '@function.outer', + ['[['] = '@class.outer', + }, + goto_previous_end = { + ['[M'] = '@function.outer', + ['[]'] = '@class.outer', + }, + }, + swap = { + enable = true, + swap_next = { + ['a'] = '@parameter.inner', + }, + swap_previous = { + ['A'] = '@parameter.inner', + }, + }, + }, +} + +-- Diagnostic keymaps +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next) +vim.keymap.set('n', 'e', vim.diagnostic.open_float) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist) + +-- LSP settings. +-- This function gets run when an LSP connects to a particular buffer. +local on_attach = function(_, bufnr) + -- NOTE: Remember that lua is a real programming language, and as such it is possible + -- to define small helper and utility functions so you don't have to repeat yourself + -- many times. + -- + -- In this case, we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + local nmap = function(keys, func, desc) + if desc then + desc = 'LSP: ' .. desc + end + + vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) + end + + nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') + nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') + + nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') + nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') + nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation') + nmap('D', vim.lsp.buf.type_definition, 'Type [D]efinition') + nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') + nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + + -- See `:help K` for why this keymap + nmap('K', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') + + -- Lesser used LSP functionality + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') + nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') + nmap('wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, '[W]orkspace [L]ist Folders') + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) +end + +-- Enable the following language servers +-- Feel free to add/remove any LSPs that you want here. They will automatically be installed. +-- +-- Add any additional override configuration in the following tables. They will be passed to +-- the `settings` field of the server config. You must look up that documentation yourself. +local servers = { + gopls = {}, + sumneko_lua = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + }, + rust_analyzer = { + ["rust-analyzer"] = { + cargo = { + allFeatures = true, + }, + completion = { + postfix = { + enable = false, + }, + }, + }, + }, + jdtls = {}, +} + +-- Setup neovim lua configuration +require('neodev').setup() +-- +-- nvim-cmp supports additional completion capabilities, so broadcast that to servers +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) + +-- Setup mason so it can manage external tooling +require('mason').setup() + +-- Ensure the servers above are installed +local mason_lspconfig = require 'mason-lspconfig' + +mason_lspconfig.setup { + ensure_installed = vim.tbl_keys(servers), +} + +mason_lspconfig.setup_handlers { + function(server_name) + require('lspconfig')[server_name].setup { + capabilities = capabilities, + on_attach = on_attach, + settings = servers[server_name], + } + end, +} + +-- Turn on lsp status information +require('fidget').setup() + +-- nvim-cmp setup +local cmp = require 'cmp' +local luasnip = require 'luasnip' + +cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, +} + +-- The line beneath this is called `modeline`. See `:help modeline` +-- vim: ts=2 sts=2 sw=2 et + diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim deleted file mode 100644 index ccafdcd..0000000 --- a/nvim/.config/nvim/init.vim +++ /dev/null @@ -1,323 +0,0 @@ -let g:polyglot_disabled = ['csv'] - -call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged') - -" Syntax Highlighting - - -" Add all the syntax highlighting for mostly everything -Plug 'sheerun/vim-polyglot' - -" Uxntal -Plug 'karolbelina/uxntal.vim' - -Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} -Plug 'nvim-treesitter/nvim-treesitter-textobjects' - -" Javascript Syntax -"Plug 'pangloss/vim-javascript' -"Plug 'udalov/kotlin-vim' - -" Additional Syntax -"Plug 'plasticboy/vim-markdown' -"Plug 'vim-python/python-syntax' - - -" Auto Formatting - - -" Google Java auto-format -Plug 'google/vim-maktaba' -Plug 'google/vim-codefmt' -Plug 'google/vim-glaive' - -" Formatter for Python -Plug 'psf/black' - - -" Development Packs - - -" Go -Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } - -" Rust -Plug 'rust-lang/rust.vim' - -" Lean -Plug 'Julian/lean.nvim' - -" Colorscheme -Plug 'morhetz/gruvbox' - -" For previewing markdown in a web browser -Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' } - - -" Autocompletion snippets -Plug 'hrsh7th/cmp-vsnip', {'branch': 'main'} -Plug 'hrsh7th/vim-vsnip' - -" Latex -Plug 'lervag/vimtex' -Plug 'KeitaNakamura/tex-conceal.vim' - -" LSP Config -Plug 'neovim/nvim-lspconfig' -Plug 'nvim-lua/lsp_extensions.nvim' -Plug 'hrsh7th/cmp-nvim-lsp' -Plug 'hrsh7th/cmp-buffer' -Plug 'hrsh7th/cmp-path' -Plug 'hrsh7th/cmp-cmdline' -Plug 'hrsh7th/nvim-cmp' -Plug 'nvim-lua/plenary.nvim' - -" Snippets -Plug 'SirVer/ultisnips' -Plug 'quangnguyen30192/cmp-nvim-ultisnips' - -"Plug 'nvim-lua/lsp_extensions.nvim' -"Plug 'ray-x/lsp_signature.nvim' - -" Javascript LSPs -Plug 'denoland/deno' -Plug 'facebook/flow' - -" Displays Git diffs in the gutters -Plug 'airblade/vim-gitgutter' - -" File browser -Plug 'preservim/nerdtree' - -" Allows searching for files by name -Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } - -call plug#end() - -" Better auto-completions -set completeopt=menuone,noinsert,noselect - -" Use tree-sitter for Lua parsing to get around a bug with Vim's formatter -" https://github.com/neovim/neovim/issues/20456 -lua <'] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }, - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'ultisnips' }, -- For ultisnips users. - }, { - { name = 'buffer' }, - }) - }) - - local capabilities = require('cmp_nvim_lsp').default_capabilities() - - -- Rust language server - lspconfig.rust_analyzer.setup { - on_attach = on_attach, - flags = { - debounce_text_changes = 150, - }, - settings = { - ["rust-analyzer"] = { - cargo = { - allFeatures = true, - }, - completion = { - postfix = { - enable = false, - }, - }, - }, - }, - capabilities = capabilities, - } - - -- Java language server - lspconfig.java_language_server.setup{ - on_attach = on_attach, - cmd = {"/usr/share/java/java-language-server/lang_server_linux.sh"}, - } - - -- Required for the Deno Language Server - vim.g.markdown_fenced_languages = { - "ts=typescript" - } - - -- Deno Javascript Language Server - lspconfig.denols.setup{ - on_attach = on_attach, - flags = lsp_flags, - } - - --[[ - -- Flow Javascript Language Server - lspconfig.flow.setup{ - on_attach = on_attach, - flags = lsp_flags, - cmd = {"flow", "lsp"} - } - --]] - - lspconfig.leanls.setup{ - abbreviations = { builtin = true }, - lsp = { on_attach = on_attach }, - lsp3 = { on_attach = on_attach }, - mappings = true, - } - - vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( - vim.lsp.diagnostic.on_publish_diagnostics, { - virtual_text = true, - signs = true, - update_in_insert = true, - } - ) -EOF - -" Auto-save buffers when they switch -" Probably not necessary, but helps if I forget to save -set autowrite - -" Go development options -let g:go_highlight_fields = 1 -let g:go_highlight_functions = 1 -let g:go_highlight_function_calls = 1 -let g:go_highlight_extra_types = 1 -let g:go_highlight_operators = 1 -let g:go_auto_type_info = 1 - -" UltiSnips keybindings -let g:UltiSnipsExpandTrigger="" -let g:UltiSnipsJumpForwardTrigger="" -let g:UltiSnipsJumpBackwardTrigger="" - -" Disable the scroll sync in the markdown preview -let g:mkdp_preview_options = { - \ 'disable_sync_scroll': 1, - \ } - - -" Vimtex configuration -let g:vimtex_view_method = 'zathura' -let g:vimtex_quickfix_mode=0 -let g:vimtex_compiler_latexmk = { - \ 'options' : [ - \ '-shell-escape', - \ '-verbose', - \ '-file-line-error', - \ '-synctex=1', - \ '-interaction=nonstopmode', - \ ], - \ } - -" Turn on spell checking and concealing for Tex files automatically -autocmd FileType tex setlocal spell colorcolumn=81 conceallevel=1 - -" Turn on text concealing in Tex files -let g:tex_conceal='abdmg' -hi Conceal ctermbg=none - -" Auto-formatting -augroup autoformat_settings - autocmd FileType java AutoFormatBuffer google-java-format - autocmd BufWritePre *.py Black -augroup END - -" Assume that all asm files are MIPS assembly syntax -au BufRead,BufNewFile *.asm set filetype=mips -au BufRead *.lean set filetype=lean - -" Python syntax config -let g:python_highlight_all = 1 - -" Settings for markdown -let g:vim_markdown_new_list_item_indent = 0 -let g:vim_markdown_auto_insert_bullets = 0 -let g:vim_markdown_frontmatter = 1 - -" Javascript Flow syntax support -let g:javascript_plugin_flow=1 - -" Enable type inlay hints -autocmd CursorHold,CursorHoldI *.rs :lua require'lsp_extensions'.inlay_hints{ only_current_line = true } - -" Press Ctrl+L to correct the previous spelling mistake -" https://castel.dev/post/lecture-notes-1/#correcting-spelling-mistakes-on-the-fly -inoremap u[s1z=`]au - -" Rustfmt config -let g:rustfmt_autosave = 1 -let g:rustfmt_emit_files = 1 -let g:rustfmt_fail_silently = 0 - - -" Prevent the text from jumping around -set signcolumn=yes - -" Proper search -set incsearch -set ignorecase -set smartcase -set gdefault - -" Prevent markdown from collapsing content -set nofoldenable - -" Vertical bar at 80 characters -set colorcolumn=80 -set background=dark -set clipboard=unnamedplus - -" Tabs instead of spaces -" tabstop is the number of spaces for the tab character -" expandtab expands tabs into spaces, and noexpandtab disables this -" shiftwidth is the number of spaces to use as indentation -set expandtab -set tabstop=2 -set shiftwidth=2 - -" Normal mouse behavior -set mouse=a - - -" True-color support: https://github.com/morhetz/gruvbox/wiki/Terminal-specific#0-recommended-neovimvim-true-color-support -if (has("termguicolors")) - set termguicolors -endif - -colorscheme gruvbox