" vim: set fenc=utf-8 ft=vim fdm=marker fmr={{{,}}}: " author: Thomas Ruoff " Basics {{{ if has('vim_starting') set encoding=utf-8 scriptencoding utf-8 set clipboard& clipboard^=unnamed,unnamedplus endif set hidden set ttyfast set lazyredraw set updatetime=300 set synmaxcol=2000 set modeline set nobackup set noswapfile set mouse=a set mousehide set wildmode=list:longest,full set wildignore+=*.swp,*.bak,*.jpg,*.gif,*.png,*.git, set wildignore+=**/node_modules/** set splitright set splitbelow set shortmess+=c " set ignorecase set infercase set smartcase set ignorecase set hlsearch set gdefault set number " Always show the signcolumn, otherwise it would shift the text each time " diagnostics appear/become resolved. if has("patch-8.1.1564") " Recently vim can merge signcolumn and number column into one set signcolumn=number else set signcolumn=yes endif set report=0 set showcmd set showmatch set spellcapcheck= set complete+=kspell if has('vim_starting') let g:mapleader="\" let g:maplocalleader=";" nnoremap xnoremap nnoremap , xnoremap , nnoremap ; xnoremap ; endif " netrw let g:netrw_fastbrowse = 0 let g:netrw_banner = 0 " sort is affecting only: directories on the top, files below let g:netrw_sort_sequence = '[\/]$,*' " }}} " Plugins {{{ call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged') Plug 'tpope/vim-sensible' Plug 'tpope/vim-unimpaired' Plug 'tpope/vim-surround' Plug 'tpope/vim-abolish' Plug 'tpope/vim-vinegar' Plug 'tpope/vim-projectionist' Plug 'tpope/vim-fugitive' Plug 'andymass/vim-matchup' Plug 'machakann/vim-highlightedyank' Plug 'editorconfig/editorconfig-vim' let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*'] Plug 'mbbill/undotree' " TODO snippets https://www.lunarvim.org/plugins/02-default-plugins.html#snippets Plug 'SirVer/ultisnips' " Plug 'pangloss/vim-javascript' " Plug 'MaxMEllon/vim-jsx-pretty' " Plug 'sheerun/vim-polyglot' " let g:polyglot_disabled = ['javascript', 'jsx', 'latex'] " Plug 'lervag/vimtex', { 'for': 'tex' } " let g:vimtex_view_method = 'zathura' Plug 'wellle/targets.vim' Plug 'janko-m/vim-test' let test#strategy = "neovim" " Plug 'ludovicchabant/vim-gutentags' " let g:gutentags_cache_dir="~/.tags" " let g:gutentags_file_list_command = { " \ 'markers': { " \ '.git': 'git ls-files', " \ '.hg': 'hg files', " \ }, " \ } Plug 'ap/vim-css-color' Plug 'godlygeek/tabular' Plug 'plasticboy/vim-markdown' Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' } " Lua Plugins Plug 'RRethy/nvim-base16' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} Plug 'neovim/nvim-lspconfig' Plug 'jose-elias-alvarez/null-ls.nvim' Plug 'kabouzeid/nvim-lspinstall' "Plug 'tamago324/nlsp-settings.nvim' Plug 'folke/trouble.nvim' Plug 'kyazdani42/nvim-web-devicons' " for file icons Plug 'kyazdani42/nvim-tree.lua' Plug 'ahmedkhalf/project.nvim' Plug 'nvim-lua/plenary.nvim' Plug 'nvim-telescope/telescope.nvim' nnoremap f :Telescope find_files Plug 'lewis6991/gitsigns.nvim' Plug 'windwp/nvim-autopairs' Plug 'folke/which-key.nvim' " TODO compnletion https://github.com/hrsh7th/nvim-cmp Plug 'hoob3rt/lualine.nvim' " debug " Plug 'tweekmonster/startuptime.vim' call plug#end() lua << EOF require('nvim-treesitter.configs').setup{ hightlight = { enabled = true }, incremental_selection = { enable = false }, ensure_installed = {'javascript'} } require("null-ls").config({ }) require("lspconfig")["null-ls"].setup({ }) require('lspinstall').setup{} local servers = require('lspinstall').installed_servers() for _, server in pairs(servers) do require'lspconfig'[server].setup{} end require("trouble").setup{} require'nvim-web-devicons'.setup{} require('nvim-tree').setup{} require('project_nvim').setup{} require('telescope').setup{} -- require('telescope').load_extension('projects') require('gitsigns').setup{} require('nvim-autopairs').setup{} local wk = require('which-key') wk.setup() wk.register({ c = {"bd", "close"}, s = "save", h = "gitsigns", f ={ name = "file", f = { "Telescope find_files", "Find File" }, r = { "Telescope oldfiles", "Open Recent File" }, c = { "e $MYVIMRC", "Open config" }, }, g = { name = "git", g = {"Git", "fugitive"} }, t = { name = "test", n = {"TestNearest", "Test Nearest"}, f = {"TestFile", "Test File"}, l = {"TestLast", "Test Last"}, } }, { prefix = ""}) require('lualine').setup{ theme = 'gruvbox'} EOF " }}} " Local .vimrc {{{ set exrc set secure " }}} " Text Formatting {{{ set list if v:version > 800 set breakindent endif set showbreak=↳ set textwidth=0 set colorcolumn=+1 set nojoinspaces set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab " }}} " Folding {{{ set foldmethod=indent set foldlevelstart=1 set nofoldenable " }}} " Diff settings {{{ set fillchars+=diff:⣿ set diffopt=vertical set diffopt+=filler set diffopt+=iwhite " }}} " {{{ Undo set undodir=$VIM_DATA_PATH/undos set undofile set undolevels=1000 set undoreload=10000 " }}} " Visual Setting {{{ " set cursorline set background=dark colorscheme base16-gruvbox-dark-medium set number " }}} " Key mappings {{{ "" fast escaping inoremap jk "" toggle fold nnoremap za "" abbreviations cnoreabbrev W! w! cnoreabbrev Q! q! cnoreabbrev Qall! qall! cnoreabbrev Wq wq cnoreabbrev Wa wa cnoreabbrev wQ wq cnoreabbrev WQ wq cnoreabbrev W w cnoreabbrev Q q cnoreabbrev Qall qall cnoreabbrev csfr csrf " }}}