" Base settings (add comments) set nocompatible syntax enable " syntax highlight set t_Co=256 " set 256 colors set number " show line numbers set ruler set ttyfast " terminal acceleration set tabstop=4 " 4 whitespaces for tabs visual presentation set shiftwidth=4 " shift lines by 4 spaces set smarttab " set tabs for a shifttabs logic set expandtab " expand tabs into spaces set autoindent " indent when moving to the next line while writing code set cursorline " shows line under the cursor's line set showmatch " shows matching part of bracket pairs (), [], {} set enc=utf-8 " utf-8 by default set nobackup " no backup files set nowritebackup " only in case you don't want a backup file while editing set noswapfile " no swap files set backspace=indent,eol,start " backspace removes all (indents, EOLs, start) What is start? set scrolloff=10 " let 10 lines before/after cursor during scroll " set clipboard=unnamed " use system clipboard set clipboard=unnamedplus set exrc " enable usage of additional .vimrc files from working directory set secure " prohibit .vimrc files to execute shell, create files, etc... let mapleader = " " " leader key " Buffers set switchbuf=useopen " open buffer instead of creating a new one set laststatus=2 " close current buffer nmap bc :bd " Search set incsearch " incremental search set hlsearch " highlight search results " highlight 'long' lines (>= 80 symbols) in python files augroup vimrc_autocmds autocmd! autocmd FileType python,rst,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black autocmd FileType python,rst,c,cpp match Excess /\%81v.*/ autocmd FileType python,rst,c,cpp set nowrap autocmd FileType python,rst,c,cpp set colorcolumn=80 autocmd FileType vimwiki set wrap autocmd FileType vimwiki set textwidth=80 augroup END " terminal cabbrev bterm bo term autocmd TerminalWinOpen * \ if &buftype == 'terminal' | \ resize 10 | "\ setlocal termwinsize=0x140 | \ endif nmap tt :bterm autocmd FileType html setlocal tabstop=2 shiftwidth=2 softtabstop=2 autocmd FileType css setlocal tabstop=2 shiftwidth=2 softtabstop=2 autocmd FileType javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2 " plugings call plug#begin() Plug 'machakann/vim-highlightedyank' Plug 'tpope/vim-commentary' Plug 'easymotion/vim-easymotion' Plug 'preservim/nerdtree' " Plug 'tpope/vim-surround' Plug 'terryma/vim-multiple-cursors' " Plug 'tommcdo/vim-exchange' " Plug 'michaeljsmith/vim-indent-object' Plug 'vimwiki/vimwiki' Plug 'mattn/calendar-vim' Plug 'jamessan/vim-gnupg' Plug 'ryanoasis/vim-devicons' " https://github.com/LunarWatcher/auto-pairs/blob/master/doc/AutoPairs.txt Plug 'LunarWatcher/auto-pairs' " Plug 'vim-airline/vim-airline' " Plug 'vim-airline/vim-airline-themes' Plug 'tiagofumo/vim-nerdtree-syntax-highlight' Plug 'morhetz/gruvbox' Plug 'christoomey/vim-tmux-navigator' Plug 'sheerun/vim-polyglot' " Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Plug 'junegunn/fzf.vim' Plug 'mhinz/vim-startify' " Plug 'tpope/vim-fugitive' Plug 'tpope/vim-obsession' Plug 'ycm-core/YouCompleteMe' Plug 'dense-analysis/ale' Plug 'SirVer/ultisnips' Plug 'honza/vim-snippets' " Plug 'majutsushi/tagbar' call plug#end() filetype on filetype plugin on filetype plugin indent on " tagbar " let g:tagbar_autofocus=0 " let g:tagbar_width=42 " autocmd BufEnter *.py :call tagbar#autoopen(0) " ultisnips let g:UltiSnipsExpandTrigger = '' let g:UltiSnipsJumpForwardTrigger = '' let g:UltiSnipsJumpBackwardTrigger = '' " easymotion map F (easymotion-s) map f (easymotion-f) " nerdtree map :NERDTree nmap " :NERDTreeToggle let NERDTreeIgnore=['\.pyc$', '\.pyo$', '__pycache__$'] " Ignore files in NERDTree let NERDTreeWinSize=40 " autocmd VimEnter * if !argc() | NERDTree | endif " Load NERDTree only if vim is run without arguments " fzf " set rtp+=/opt/homebrew/opt/fzf " nmap bb :Buffers " auto-pairs let g:AutoPairsMapBS = 1 let g:AutoPairsBSAfter = 0 " airline " let g:airline#extensions#obsession#enable = 1 " let g:airline#extensions#tabline#enabled = 1 " let g:airline#extensions#ale#enabled = 1 " let g:airline_powerline_fonts = 1 " let g:airline#extensions#whitespace#enabled = 0 " let g:airline_theme='gruvbox' " if !exists('g:airline_symbols') " let g:airline_symbols = {} " endif " let g:airline_symbols.linenr = ' ☰ ' " let g:airline_symbols.colnr = ' : ' " let g:airline_symbols.maxlinenr = '' " theme autocmd vimenter * ++nested colorscheme gruvbox set background=dark let g:gruvbox_contrast_dark='soft' " vim wiki let g:GPGFilePattern = '*.\(gpg\|asc\|pgp\)\(.wiki\|.md\)\=' " toogle checklists nnoremap cl :VimwikiToggleListItem " reset gpg-agent password cache after close or save the buffer (vimwiki diary) autocmd BufWritePost *.asc.md !gpgconf --reload gpg-agent " https://github.com/WnP/vimwiki_markdown " ~/vimwiki/personal - private content " ~/vimwiki/public_wiki - public wiki content " ~/vimwiki/diary - private diary let default_wiki = '~/Productivity/vimwiki/personal' let public_wiki = '~/Productivity/vimwiki/public_wiki' let g:diary = '~/Productivity/vimwiki/diary' let g:diary_index_name = 'diary' let g:diary_ext = '.asc.md' let g:vimwiki_list = [{ \ 'path': default_wiki, \ 'diary_rel_path': '../diary', \ 'auto_diary_index': 1, \ 'auto_export': 0}, \ {'path': public_wiki, \ 'auto_export': 0, \ 'diary_rel_path': '../diary', \ 'template_path': public_wiki . '/templates/', \ 'template_default': 'default', \ 'syntax': 'markdown', \ 'ext': '.md', \ 'path_html': public_wiki . '/site_html/', \ 'custom_wiki2html': 'vimwiki_markdown', \ 'template_ext': '.tpl'}, \ {'path': diary, \ 'index': diary_index_name, \ 'ext': diary_ext, \ 'diary_rel_path': './', \ 'auto_diary_index': 1, \ 'auto_export': 0}] " fix - https://github.com/vimwiki/vimwiki/issues/1055 exe 'autocmd BufEnter ' . diary_index_name . diary_ext . ' :VimwikiDiaryGenerateLinks' " inserting default diary template function! AppendDiaryTemplate() " detecting path of current buffer let current_dir = substitute(expand('%:p:h'), '^' . $HOME, '~', '') if current_dir == g:diary r! ~/scripts/vimwiki_diary_template execute '1,2d' normal G normal o endif endfunction command! InsertDiaryTemplate call AppendDiaryTemplate() nnoremap idr :InsertDiaryTemplate " inserting default GPG fingerprint for the diary let g:diaryGPG = 'CE7EB8727486553012A04E284EE708165AA10C48' command! InsertGPGAndExit call AppendGPGAndExit() function! AppendGPGAndExit() " detecting vim-gnupg dialog if match(getline(2), '^GPG:') == 0 call append(line('.'), g:diaryGPG) wq endif endfunction nnoremap igg :InsertGPGAndExit " prettier nmap mm (PrettierAsync) " ALE let g:ale_linters = { \ 'python': ['ruff', 'mypy', 'pyright'], \} let g:ale_fixers = { \ '*': ['remove_trailing_lines', 'trim_whitespace'], \ 'python': ['ruff', 'ruff_format'], \ 'javascript': ['prettier', 'eslint'], \} let g:ale_fix_on_save = 1 map (ale_next_wrap) map (ale_previous_wrap) nmap go :ALEGoToDefinition nmap qf :ALEFix nmap k :ALEHover let g:ale_python_auto_virtualenv = 1 let g:ale_fix_on_save = 1 " YCM set completeopt-=preview " autocmd CompleteDone * if pumvisible() == 0 | pclose | endif set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,ж\\;,э',ё\\,яz,чx,сc,мv,иb,тn,ьm,б\\,,ю.,ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,Х{,Ъ},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж:,Э\\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б<,Ю>,Ё/|