lua require('plugins') " Specify a directory for plugins " - For Neovim: stdpath('data') . '/plugged' " - Avoid using standard Vim directory names like 'plugin' " call plug#begin('~/.vim/plugged') " Make sure you use single quotes "Plug 'vim-airline/vim-airline' "Plug 'vim-airline/vim-airline-themes' "Plug 'sickill/vim-monokai' "Plug 'airblade/vim-gitgutter' "Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } "Plug 'junegunn/fzf.vim' "Plug 'udalov/kotlin-vim' "Plug 'rust-lang/rust.vim' "Plug 'zivyangll/git-blame.vim' "Plug 'mfukar/robotframework-vim' "" Plug 'dense-analysis/ale' "Plug 'arcticicestudio/nord-vim' "Plug 'eliba2/vim-node-inspect' "Plug 'hashivim/vim-terraform' "Plug 'chaoren/vim-wordmotion' "Plug 'cappyzawa/starlark.vim' "Plug 'editorconfig/editorconfig-vim' " "" Initialize plugin system "call plug#end() " Coloring syntax enable colorscheme nord " Airline let g:airline#extensions#tabline#enabled = 1 let g:airline_powerline_fonts = 1 let g:airline_theme='nord' " -- Buffer/Window Workflow " Allow hidden buffers set hidden " Line numbers set number " Marker line at col 80 set cc=80 " Stop mouse from selecting numbers set mouse=a " Show tab characters set list set listchars=tab:▒░,trail:▓ " Space-indentation please set expandtab set shiftwidth=4 set tabstop=4 autocmd FileType typescript setlocal shiftwidth=2 softtabstop=2 expandtab autocmd FileType typescriptreact setlocal shiftwidth=2 softtabstop=2 expandtab autocmd FileType json setlocal shiftwidth=2 softtabstop=2 expandtab autocmd FileType javascript setlocal shiftwidth=2 softtabstop=2 expandtab " Default to UTF-8 encoding set encoding=utf-8 " Some languages have different indentation preferences. Try to use them. filetype plugin indent on " Don't try to be Vi compatible. Just stick to Vim! set nocompatible " Allow backspace to always work, across linebreaks/indentation etc. set backspace=indent,eol,start " Blink matching bracket set showmatch " We never use octals, but we do use zero-prefixed numbers. set nrformats-=octal " We are fast, don't get stuck in an old aborted command set ttimeout set ttimeoutlen=50 " Always retain the status line set laststatus=2 " Enable ruler to show column position set ruler " Retain last command in command line set showcmd " Give me a menu for completion in the command line set wildmenu " Stop asking me, just reload the changed file! set autoread " Don't litter backup files. Don't do swaps (we're not that paranoid) set nobackup set nowritebackup set noswapfile " Check for file endings set fileformats=unix,dos " Quicky to exit insert mode inoremap " Smartcase search set ignorecase set smartcase " Incremental search set incsearch " Highlight search set hlsearch " Use to clear the highlighting of :set hlsearch. if maparg('', 'n') ==# '' nnoremap :nohlsearch endif " " Plugins config " " Ripgrep FZF function! RipgrepFzf(query, fullscreen) let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case %s || true' let initial_command = printf(command_fmt, shellescape(a:query)) let reload_command = printf(command_fmt, '{q}') let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]} call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen) endfunction command! -nargs=* -bang RG call RipgrepFzf(, 0) " FZF nnoremap :Files nnoremap :Buffers " Tabs nnoremap :tabnext nnoremap :tabprevious " Rust let g:rustfmt_autosave = 1 " Git Blame nnoremap :call gitblame#echo() " JSX let g:jsx_ext_required = 0 " Don't highlight shitty comments in JSON autocmd FileType json syntax match Comment +\/\/.\+$+ " this machine config if filereadable(expand("~/.vimrc.local")) source ~/.vimrc.local endif " CTags set tags+=.tags " We like hidden files let g:fzf_tags_command = 'ctags -R -f .tags --exclude=@.ctagsignore' " ALE "highlight ALEWarning ctermbg=DarkGrey "let g:ale_completion_enabled=1 " "let g:ale_javascript_eslint_use_global = 1 "let g:ale_javascript_eslint_executable = 'yarn' "let g:ale_javascript_eslint_options = 'run eslint' " "call ale#linter#Define('typescript', { "\ 'name': 'tsserver2', "\ 'lsp': 'tsserver', "\ 'executable': '/usr/bin/yarn', "\ 'command': '%e run tsserver', "\ 'project_root': function('ale#handlers#tsserver#GetProjectRoot'), "\ 'language': '', "\}) " "let g:ale_linters = { "\ 'typescript': ['eslint', 'tsserver2'] "\}