set nocompatible " be iMproved, required filetype off " required let mapleader = ";" let install = 0 if empty(glob("~/.vim/autoload/plug.vim")) silent execute '!mkdir -p ~/.vim/autoload' silent execute '!mkdir -p ~/.vim/undodir' silent execute '!mkdir -p ~/.vim/swapdir' silent execute '!curl -fLo ~/.vim/autoload/plug.vim https://raw.github.com/junegunn/vim-plug/master/plug.vim' let install = 1 endif call plug#begin() Plug 'tpope/vim-fugitive' Plug 'puremourning/vimspector' Plug 'vim-scripts/DrawIt' Plug 'Bercio/vim-inkscape-insert' Plug 'rstacruz/sparkup', {'rtp': 'vim/'} Plug 'vim-pandoc/vim-pandoc' Plug 'vim-pandoc/vim-pandoc-syntax' Plug 'MarcWeber/vim-addon-mw-utils' Plug 'tomtom/tlib_vim' Plug 'cespare/vim-toml' Plug 'SirVer/ultisnips' Plug 'honza/vim-snippets' Plug 'mhartington/oceanic-next' Plug 'preservim/nerdtree' Plug 'farmergreg/vim-lastplace' Plug 'sk1418/HowMuch' Plug 'godlygeek/tabular' Plug 'vim-crystal/vim-crystal' Plug 'stephpy/vim-yaml' Plug 'MaxMEllon/vim-jsx-pretty' Plug 'arrufat/vala.vim' Plug 'chaimleib/vim-renpy' Plug 'vhda/verilog_systemverilog.vim' Plug 'gregkh/kernel-coding-style' Plug 'dense-analysis/ale' Plug 'PenguinOwl/lsp' Plug 'editorconfig/editorconfig-vim' Plug '907th/vim-auto-save' call plug#end() " required if install set number PlugInstall q endif filetype plugin indent on " required set number set tabstop=2 shiftwidth=2 expandtab set ai nnoremap gp '`[' . strpart(getregtype(), 0, 1) . '`]' " tnoremap tnoremap N tnoremap N set timeout timeoutlen=500 " Default set ttimeout ttimeoutlen=100 " Set by defaults.vim set undofile set undodir=~/.vim/undodir set directory=~/.vim/swapdir set ignorecase set smartcase set nomodeline set exrc set secure set cursorline set wildmode=longest,list set wildmenu let g:solarized_termcolors=256 let g:pandoc#folding#fold_yaml=1 let g:pandoc#folding#mode = ['manual'] let g:pandoc#folding#fdc = 0 let g:pandoc#syntax#conceal#use=0 let g:UltiSnipsExpandTrigger="" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" let g:UltiSnipsListSnippets="" if (has("termguicolors")) set termguicolors endif " Theme syntax enable colorscheme OceanicNext let g:airine_theme='oceanicnext' let g:airline_powerline_fonts = 1 autocmd FileType help setlocal nospell set laststatus=2 set statusline=%m\ %F\ %y\ %{&fileencoding?&fileencoding:&encoding}\ %=%(C:%c\ L:%l\ %P%) autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") \ && b:NERDTree.isTabTree()) | q | endif autocmd FileType gitcommit setlocal spell set viminfo='20,<1000,s1000 hi CursorLineNr term=bold cterm=bold ctermfg=012 gui=bold hi EndOfBuffer ctermfg=bg guifg=#404950 hi ALEError ctermbg=DarkRed hi ALEWarning ctermbg=DarkBlue hi SpellBad ctermbg=88 hi SpellCap ctermbg=97 guibg=#c65d34 hi SpellRare ctermbg=52 hi SpellLocal ctermbg=19 hi Pmenu ctermfg=145 ctermbg=233 guifg=#a7adba guibg=#263956 hi PmenuSel ctermfg=145 ctermbg=233 guifg=#ffffff guibg=#0d6221 hi Search ctermfg=243 ctermbg=221 guifg=#dfdd99 guibg=#715910 hi! def link DiffAdded DiffAdd hi! def link DiffRemoved DiffDelete hi! def link ALEError SpellBad hi! def link ALEWarning SpellCap inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" noremap = :Tab /^[^=]\zs=* noremap p noremap ; noremap l noremap ' noremap t :NERDTree % noremap 2 :botright terminal10_ noremap q :qa noremap Q :qa! noremap a :xa noremap r :w:!%:p noremap 9 :%!xxd noremap 0 :%!xxd -r noremap e :diffput RE]c noremap r :diffg RE]c noremap f :ALEFix noremap i :ALEImport noremap x :LspCodeAction noremap d :LspGotoDefinition noremap D :LspGotoDeclaration noremap w :LspShowReferences noremap z :LspRename noremap s :ALEDetail noremap ]e :ALENext noremap [e :ALEPrevious noremap kb VimspectorToggleBreakpoint noremap kr VimspectorRestart noremap kc VimspectorContinue noremap ks VimspectorStepInto noremap kd VimspectorStepOver noremap ka VimspectorStepOut noremap kw VimspectorBalloonEval noremap kx :VimspectorReset noremap :tab split let g:vimspector_sidebar_width = 40 let g:vimspector_bottombar_height = 3 let g:vimspector_code_minwidth = 120 "let g:vimspector_terminal_maxwidth = 80 "let g:vimspector_terminal_minwidth = 10 set mouse=a set foldmethod=indent set foldlevel=1 set foldclose=all set nofoldenable set foldlevel=99 set scrolloff=7 set noballoonevalterm let g:ale_linters = #{ \ cs: [], \ c: [], \ ruby: [] \ } let g:ale_fixers = #{ \ python: [ \ 'remove_trailing_lines', \ 'trim_whitespace', \ 'autoimport', \ 'autoflake', \ 'isort', \ 'black', \ ], \ crystal: ['crystal'], \ javascript: ['prettier', 'eslint'], \ typescript: ['prettier', 'eslint'], \ javascriptreact: ['prettier', 'eslint'], \ typescriptreact: ['prettier', 'eslint'], \ c: ['clang-format'], \ } function SetupALEBuffer() if wordcount().chars > 50000 let g:ale_enabled=0 else let g:ale_enabled=1 endif endfunction set pumheight=10 let lang_server_path = $VIRTUAL_ENV.'/bin/pyright-langserver' let lspOpts = #{ \ aleSupport: 1, \ snippetSupport: 1, \ } let lsp_configs = [#{name: 'pyright', \ filetype: ['python'], \ path: lang_server_path, \ args: ['--stdio'], \ workspaceConfig: #{ \ python: #{ \ pythonPath: $VIRTUAL_ENV.'/bin/python' \ }} \ }, \ #{name: 'tsserver', \ filetype: ['javascript', 'typescript', 'javascriptreact', 'typescriptreact'], \ path: '/usr/bin/typescript-language-server', \ args: ['--stdio'] \ }, \ #{name: 'vscode-css', \ filetype: ['css', 'scss', 'less'], \ path: 'vscode-css-language-server', \ args: ['--stdio'], \ initializationOptions: #{ \ provideFormatter: 0 \ } \ }, \ #{name: 'omnisharp', \ filetype: ['cs'], \ path: '/usr/lib/omnisharp/OmniSharp', \ args: ['-z', '--languageserver', '--encoding', 'utf-8'] \ }, \ #{name: 'crystalline', \ filetype: ['crystal'], \ path: '/usr/bin/crystalline', \ args: ['--stdio'], \ rootSearch: ['shard.yml', '.git'] \ }, \ #{name: 'ruby-lsp', \ filetype: ['ruby'], \ path: '/usr/bin/ruby-lsp', \ rootSearch: ['Gemfile', '.git'] \ }, \ #{name: 'clangd', \ filetype: ['c', 'cpp'], \ path: '/usr/bin/clangd', \ args: ['--background-index', '--clang-tidy'] \ } \ ] let lsp_list = [] for config in lsp_configs if executable(config["path"]) let lsp_list = add(lsp_list, config) endif endfor autocmd BufEnter * call SetupALEBuffer() autocmd BufEnter *.log setlocal autoread autocmd User LspSetup call LspAddServer(lsp_list) autocmd User LspSetup call LspOptionsSet(lspOpts) autocmd User LspAttached let b:ale_disable_lsp = 1 "autocmd BufEnter *.jsx call UltiSnipsAddFiletypes(["html", "javascript"])