set nocompatible filetype off call plug#begin('~/.local/share/nvim/plugged') " === plugins === "Plug 'vim-airline/vim-airline' "Plug 'vim-airline/vim-airline-themes' Plug 'itchyny/lightline.vim' Plug 'godlygeek/tabular' Plug 'lepture/vim-jinja' Plug 'majutsushi/tagbar' " Plug 'nblock/vim-dokuwiki' Plug 'reedes/vim-pencil' Plug 'saltstack/salt-vim' Plug 'sickill/vim-monokai' " Plug 'sjl/gundo.vim' Plug 'tpope/vim-commentary' Plug 'tpope/vim-fugitive' " Plug 'tpope/vim-speeddating' " Plug 'tpope/vim-surround' Plug 'airblade/vim-gitgutter' Plug 'junegunn/goyo.vim' Plug 'junegunn/limelight.vim' " Plug 'sheerun/vim-polyglot' " Plug 'freitass/todo.txt-vim' Plug 'Valloric/YouCompleteMe' Plug 'nathanaelkane/vim-indent-guides' "Plugin 'Lokaltog/vim-easymotion' "Plugin 'PeterRincker/vim-argumentative' "Plugin 'flazz/vim-colorschemes' "Plugin 'jmcantrell/vim-virtualenv' "Plugin 'kien/ctrlp.vim' "Plugin 'klen/python-mode' "Plugin 'mbbill/undotree' Plug 'scrooloose/nerdtree' "Plugin 'sjl/gundo.vim' "Plugin 'terryma/vim-expand-region' "Plugin 'terryma/vim-multiple-cursors' "Plugin 'wellle/targets.vim' "Plugin 'wincent/Command-T' Plug 'vimwiki/vimwiki' "Plug 'blindFS/vim-taskwarrior' " Plug 'tbabej/taskwiki' Plug 'rodjek/vim-puppet' Plug 'suan/vim-instant-markdown' "Plug 'marshallward/vim-restructuredtext' "Plug 'vim-syntastic/syntastic' "Plug 'ElmCast/elm-vim' Plug 'avh4/elm-format' Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } Plug 'hashivim/vim-terraform' Plug 'editorconfig/editorconfig-vim' Plug 'leafgarland/typescript-vim' Plug 'prettier/vim-prettier', { 'do': 'yarn install' } Plug 'yuezk/vim-js' Plug 'maxmellon/vim-jsx-pretty' Plug 'evanleck/vim-svelte', {'branch': 'main'} "Plug 'neoclide/coc.nvim', {'branch': 'release'} " Plug 'Chiel92/vim-autoformat' call plug#end() filetype plugin indent on " == formatting == set tabstop=4 set smarttab set softtabstop=4 set shiftround set shiftwidth=4 set autoindent set expandtab set smartindent set formatoptions=tcqjron "set formatoptions= " == ui == set cursorline set showcmd set number set wildmode=list:longest set lazyredraw set wildmenu set noshowmatch set colorcolumn=80 set laststatus=2 set matchtime=5 set mouse=a set mousehide set noerrorbells set noshowmode set numberwidth=2 set relativenumber set shortmess=rti set ruler set scrolloff=7 set title set titlestring="" set ttyfast " == searching == set hlsearch set incsearch set gdefault set ignorecase set magic set smartcase " == folding == set foldenable set foldmethod=indent set foldnestmax=2 set foldlevelstart=2 " == backups == set nobackup set backupcopy=no set nowritebackup " == swap == set swapfile set updatecount=200 set updatetime=10000 " == undo == set undolevels=1000 set undoreload=10000 set undodir=~/.vim/undo set undofile " == environment / directories == set autochdir set directory=/var/tmp,/tmp set viewdir=~/.vim/view " == misc == set autoread set confirm set encoding=utf-8 set history=1000 set modeline set modelines=5 set notildeop set wildignore=*.swp,*.bak,*.pyc,*~,*.o set hidden " == editing == set backspace=indent,eol,start " set esckeys set matchpairs=(:),{:},[:],<:> set notimeout set ttimeout set timeoutlen=1000 set ttimeoutlen=0 set virtualedit=block set whichwrap=b,s " == line breaking == set linebreak set wrap set wrapscan " === keybinds === set pastetoggle= let maplocalleader = "รถ" let mapleader = "\" " map w: w! " nnoremap w :w nmap za map , : vnoremap y y`] vnoremap p p`] nnoremap p p`] nnoremap , :nohlsearch noremap gV `[v`] map Y y$ map j gj map k gk nnoremap h nnoremap j nnoremap k nnoremap l nmap :bnext nmap :bprev map N Nzz map n nzz inoremap jj nnoremap v vl nnoremap m :InstantMarkdownPreview nnoremap u :GundoToggle nnoremap d :diffupdate nmap :Goyo:TogglePencil:Limelight!! nmap w :Goyo:TogglePencil:Limelight!! nmap c :%w !xclip -selection clipboard nmap x :r !xclip -out -selection -clipboard nmap f :Autoformat " no more ex mode nnoremap Q " === autocommands === "" autosave views when closing and restoring when opening again. "autocmd BufWinLeave *.* mkview "autocmd BufWinEnter *.* silent loadview " === plugin setup === " == colorscheme == set background=light let g:solarized_termcolors=16 let g:solarized_termtrans=1 let g:solarized_contrast="normal" let g:solarized_visibility="normal" syntax enable silent! colorscheme monokai " == tagbar == nnoremap :TagbarToggle let g:tagbar_map_jump = "i" let g:tagbar_left = 0 let g:tagbar_vertical = 0 let g:tagbar_width = 50 let g:tagbar_autoclose = 1 let g:tagbar_autofocus = 1 let g:tagbar_sort = 0 " 1: sort by name, 0: sort by position let g:tagbar_compact = 1 let g:tagbar_indent = 2 let g:tagbar_show_linenumbers = 0 let g:tagbar_foldlevel = 99 " unfold all " == airline == "let g:airline_right_sep = '' "let g:airline_left_sep = '' "let g:airline#extensions#disable_rtp_load = 1 "let g:airline_extensions = ['whitespace'] "let g:airline_theme='powerlineish' "let g:airline_powerline_fonts = 1 "let g:airline_section_x = airline#section#create(['%{tagbar#currenttag("%s", "", "f")}','' , ' %{PencilMode()}', ' [', 'filetype', ']']) "let g:pencil#mode_indicators = {'hard': 'H', 'auto': 'A', 'soft': 'S', 'off': '',} "let g:airline#extensions#whitespace#enabled = 1 "let g:airline#extensions#whitespace#symbol = '' "let g:airline#extensions#whitespace#checks = ['trailing'] let g:lightline = { \ 'colorscheme': 'powerline', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'readonly', 'filename', 'modified', 'helloworld' ] ], \ 'right': [ [ 'gitbranch' ], \ [ 'lineinfo' ], \ [ 'percent' ], \ [ 'fileformat', 'fileencoding', 'filetype', 'charvaluehex' ], \ [ 'directory' ] ], \ }, \ 'component_function': { \ 'gitbranch': 'fugitive#head', \ 'directory': 'LightLineFilename', \ }, \ 'component': { \ }, \ } function! LightLineFilename() return fnamemodify(expand('%F'), ":~:h") endfunction " == pencil == let g:pencil#textwidth = 80 let g:pencil#autoformat = 1 let g:pencil#cursorwrap = 1 let g:pencil#wrapModeDefault = 'soft' let g:pencil#cursorwrap = 0 " == goyo == let g:goyo_width = 100 let g:goyo_height = "90%" let g:goyo_linenr = 0 " == limelight == let g:limelight_default_coefficient = 0.5 " === functions === function! DeleteTrailingWS() exe "normal mz" %s/\s\+$//e exe "normal `z" endfunction autocmd BufWritePre * :call DeleteTrailingWS() autocmd FileType yaml set shiftwidth=2 set completeopt-=preview let g:ycm_add_preview_to_completeopt = 0 set completeopt-=preview let g:ycm_add_preview_to_completeopt = 0 let g:instant_markdown_autostart = 0 let g:terraform_align = 1 let g:terraform_fmt_on_save=1 if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif let g:ycm_server_python_interpreter = "python3" au FileType html setl shiftwidth=2 " Use // in visual mode to search for selection " https://vim.fandom.com/wiki/Search_for_visually_selected_text vnoremap // y/\V=escape(@",'/\') if v:version >= 700 au BufLeave * let b:winview = winsaveview() au BufEnter * if(exists('b:winview')) | call winrestview(b:winview) | endif endif