init.vim 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. syntax on
  2. filetype plugin indent on
  3. " Plugins
  4. call plug#begin('~/.vim/plugged')
  5. Plug 'chriskempson/base16-vim'
  6. Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " We recommend updating the parsers on update
  7. Plug 'neovim/nvim-lspconfig'
  8. Plug 'nvim-lua/completion-nvim'
  9. Plug 'kaicataldo/material.vim', { 'branch': 'main' }
  10. Plug 'nvim-lua/popup.nvim'
  11. Plug 'nvim-lua/plenary.nvim'
  12. Plug 'nvim-telescope/telescope.nvim'
  13. call plug#end()
  14. " General vim configurations
  15. set relativenumber
  16. set colorcolumn=80
  17. set updatetime=50
  18. set tabstop=4 softtabstop=4
  19. set expandtab
  20. set smartindent
  21. set completeopt=menuone,noinsert,noselect
  22. set noswapfile
  23. set nobackup
  24. set scrolloff=8
  25. set signcolumn=yes
  26. set nowrap
  27. set nu
  28. set hidden
  29. set undodir=~/.config/nvim/undodir
  30. set undofile
  31. " Theme settings
  32. " https://github.com/kaicataldo/material.vim
  33. if (has('termguicolors'))
  34. set termguicolors
  35. endif
  36. let g:material_theme_style = 'darker'
  37. colorscheme material
  38. " Lsp configuration for multiple languages
  39. lua require'lspconfig'.bashls.setup{}
  40. lua require'lspconfig'.jsonls.setup{}
  41. lua require'lspconfig'.pyls.setup{ on_attach=require'completion'.on_attach }
  42. lua require'lspconfig'.gopls.setup{ on_attach=require'completion'.on_attach }
  43. lua require'lspconfig'.rust_analyzer.setup{ on_attach=require'completion'.on_attach }
  44. lua require'lspconfig'.clangd.setup{ on_attach=require'completion'.on_attach }
  45. " auto complete matching strategy
  46. let g:completion_matching_strategy_list = ['exact', 'substring', 'fuzzy']
  47. " Use <Tab> and <S-Tab> to navigate through popup menu
  48. inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
  49. inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
  50. " Avoid showing message extra message when using completion
  51. set shortmess+=c
  52. " Tree-sitter config
  53. lua require'nvim-treesitter.configs'.setup { highlight = { enable = true } }
  54. " keyboard shortcut options
  55. let mapleader = " "
  56. nnoremap <leader>n gt
  57. nnoremap <leader>m gT
  58. " Telescope shortcuts
  59. nnoremap <leader>ff <cmd>Telescope find_files<cr>
  60. nnoremap <leader>fg <cmd>Telescope live_grep<cr>
  61. nnoremap <leader>fb <cmd>Telescope buffers<cr>
  62. nnoremap <leader>fh <cmd>Telescope help_tags<cr>