set nocompatible " stops wack stuff set wildmenu " better command line completion set showmode " show editing mode set showcmd " show partial commands set encoding=UTF-8 set title " spellcheck set spelllang=en,fr,de,cjk set spellsuggest=best,9 nnoremap :set spell! inoremap :set spell! " use case-insensitive search except when using capitals set ignorecase set smartcase set backspace=indent,eol,start " Allow backspacing over autoindent, line breaks and start of insert action set nostartofline " stop certain things from going to first character in line set ruler " display cursor position set confirm " ask to save stuff before failed command set visualbell " visual indicator instead of beep set t_vb= " reset terminal code for visual bell set cmdheight=2 " set command window height to 2 lines set number " display line numbers set notimeout ttimeout ttimeoutlen=200 " timeout on keycodes but not mappings " Indentation Stuff set shiftwidth=4 set tabstop=4 set autoindent " keep indent of file or smth " Use and to navigate through pop-up menu inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" nnoremap f NERDTreeToggle nnoremap t ToggleTerm set lazyredraw " auto-indenting if has('filetype') filetype indent plugin on endif " syntax highlighting if has('syntax') syntax on endif " latex config let g:tex_flavor = 'latex' let g:tex_conceal = '' "let g:vimtex_fold_manual = 1 "let g:vimtex_latexmk_continuous = 1 "let g:vimtex_compiler_progname = 'nvr' " Plugins will be downloaded under the specified directory. call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged') " Declare the list of plugins. " Theme Plug 'catppuccin/nvim', {'as': 'catppuccin'} " Statusline plugin Plug 'feline-nvim/feline.nvim', { 'branch': 'develop' } " Misc Plug 'glepnir/dashboard-nvim' " startup dashboard Plug 'kyazdani42/nvim-web-devicons' " icons! Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " better syntax highlighting Plug 'lewis6991/spellsitter.nvim' " treesitter for spelling Plug 'akinsho/toggleterm.nvim' " better terminal support Plug 'alaviss/nim.nvim' " nim language support Plug 'HiPhish/guile.vim' " guile language support Plug 'karolbelina/uxntal.vim' " uxn language support Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " searching Plug 'junegunn/fzf.vim' Plug 'tpope/vim-commentary' " commenting tool Plug 'rrethy/vim-hexokinase', { 'do': 'make hexokinase' } " show colours "Plug 'folke/trouble.nvim' " git signs Plug 'nvim-lua/plenary.nvim' Plug 'lewis6991/gitsigns.nvim' " LaTeX "Plug 'lervag/vimtex' Plug 'Konfekt/FastFold' " speeds or folding or smth Plug 'matze/vim-tex-fold' " rust-lsp configuration Plug 'neovim/nvim-lspconfig' Plug 'hrsh7th/nvim-cmp' " completion framework Plug 'hrsh7th/cmp-nvim-lsp' " LSP completion source for nvim-cmp Plug 'hrsh7th/cmp-vsnip' " snippet completion source for nvim-cmp Plug 'hrsh7th/cmp-path' " other usefull completion sources Plug 'hrsh7th/cmp-buffer' Plug 'simrat39/rust-tools.nvim' Plug 'hrsh7th/vim-vsnip' " snippet engine " Plug 'nvim-lua/lsp_extensions.nvim' " File tree Plug 'preservim/nerdtree' Plug 'Xuyuanp/nerdtree-git-plugin' " git status icons "Plug 'ryanoasis/vim-devicons' Plug 'tiagofumo/vim-nerdtree-syntax-highlight' " syntax highlighting? Plug 'ryanoasis/vim-devicons' " icons " Optional dependencies Plug 'nvim-lua/popup.nvim' " Plug 'nvim-telescope/telescope.nvim' call plug#end() " Set colour scheme autocmd vimenter * ++nested colorscheme catppuccin colorscheme catppuccin let g:Hexokinase_highlighters = ['sign_column'] " Setup plugins lua require('feline').setup({components = require('catppuccin.core.integrations.feline'),}) lua require('gitsigns').setup() lua require('spellsitter').setup() lua require("toggleterm").setup{} " Default value is clap let g:dashboard_default_executive ='fzf' let g:dashboard_preview_command = 'cat' let g:dashboard_preview_pipeline = 'lolcat' let g:dashboard_preview_file = '~/.config/nvim/neovim.cat' let g:dashboard_preview_file_height = 16 let g:dashboard_preview_file_width = 33 " trouble config " seems to be broken rn? " lua require("trouble").setup() lua <'] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), -- Add tab support [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), [''] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true, }) }, -- Installed sources sources = { { name = 'nvim_lsp' }, { name = 'vsnip' }, { name = 'path' }, { name = 'buffer' }, }, }) EOF " Code navigation shortcuts nnoremap lua vim.lsp.buf.definition() nnoremap K lua vim.lsp.buf.hover() nnoremap gD lua vim.lsp.buf.implementation() nnoremap lua vim.lsp.buf.signature_help() nnoremap 1gD lua vim.lsp.buf.type_definition() nnoremap gr lua vim.lsp.buf.references() nnoremap g0 lua vim.lsp.buf.document_symbol() nnoremap gW lua vim.lsp.buf.workspace_symbol() nnoremap gd lua vim.lsp.buf.definition() nnoremap ga lua vim.lsp.buf.code_action() " Set updatetime for CursorHold " 300ms of no cursor movement to trigger CursorHold set updatetime=300 " Show diagnostic popup on cursor hold autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) " Goto previous/next diagnostic warning/error nnoremap g[ lua vim.diagnostic.goto_prev() nnoremap g] lua vim.diagnostic.goto_next() " have a fixed column for the diagnostics to appear in " this removes the jitter when warnings/errors flow in set signcolumn=yes " Auto-format *.rs (rust) files prior to saving them autocmd BufWritePre *.rs lua vim.lsp.buf.formatting_sync(nil, 1000) " Terminal stuff lua <', [[]], opts) vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[]], opts) vim.api.nvim_buf_set_keymap(0, 't', '', [[h]], opts) vim.api.nvim_buf_set_keymap(0, 't', '', [[j]], opts) vim.api.nvim_buf_set_keymap(0, 't', '', [[k]], opts) vim.api.nvim_buf_set_keymap(0, 't', '', [[l]], opts) end vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()') EOF