let mapleader =" " " Check if vim-plug is installed, otherwise download and install if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin('~/.local/share/nvim/site/plugged') Plug 'junegunn/goyo.vim' Plug 'PotatoesMaster/i3-vim-syntax' Plug 'jreybert/vimagit' Plug 'tpope/vim-commentary' Plug 'junegunn/fzf' Plug 'preservim/nerdtree' Plug 'ervandew/supertab' Plug 'neomake/neomake' Plug 'jamessan/vim-gnupg' Plug 'majutsushi/tagbar' Plug 'rust-lang/rust.vim' Plug 'cespare/vim-toml' Plug 'xavierd/clang_complete' Plug 'pangloss/vim-javascript' Plug 'https://gitlab.com/HiPhish/info.vim' Plug 'autozimu/LanguageClient-neovim', { \ 'branch': 'next', \ 'do': 'bash install.sh', \ } call plug#end() " Some basics: set nocompatible filetype plugin on syntax on set foldmethod=syntax set omnifunc=syntaxcomplete#Complete set guicursor=n-v-sm:block,i-ci-c-ve:ver25,r-cr-o:block set cursorline set number set relativenumber set scrolloff=5 set colorcolumn=+1 set textwidth=80 set mouse=a " Colors colorscheme ultramar let g:ultramar_italic=1 if $COLORSCHEME == "light" set background=light endif set termguicolors function! ChangeBG() if &background == "light" set background=dark return endif set background=light endfunction map :call ChangeBG() " Set screen title let &titlestring = "vim - " . expand("%:t") if &term == "screen" set t_ts=^[k set t_fs=^[\ endif set title au BufEnter * let &titlestring = "vim - " . expand("%t") " Functions for git branch name on statusline function! GitBranch() return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'") endfunction function! StatuslineGit() let l:branchname = GitBranch() return strlen(l:branchname) > 0?'  '.l:branchname.' ':'' endfunction " Statusline let laststatus=2 set statusline= set statusline+=%#CursorLineNR# set statusline+=%{StatuslineGit()} set statusline+=%#StatusLine# set statusline+=%< set statusline+=\ %f%r%m set statusline+=%= set statusline+=\ %l:%v/%L set statusline+=\ set statusline+=%#StatusLineNC# set statusline+=\ %Y set statusline+=\ %{&fileencoding?&fileencoding:&encoding} set statusline+=\[%{&fileformat}\] set statusline+=\ " default indentation filetype plugin indent on set noexpandtab set copyindent set preserveindent set softtabstop=0 set tabstop=4 set shiftwidth=4 " Splits open at the bottom and right, which is non-retarded, unlike vim defaults. set splitbelow set splitright " To avoid switching between keyboards set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯХЪБЮ;ABCDEFGHIJKLMNOPQRSTUVWXYZ{}<>,фисвуапршолдьтщзйкыегмцчняхъэ;abcdefghijklmnopqrstuvwxyz[]' " Toggle relative line numbers map e :set invrelativenumber map у :set invrelativenumber " Shortcutting split navigation, saving a keypress: map h map j map k map l " Open the selected text in a split (i.e. should be a file). map o "oyaW:sp o xnoremap o "oy:sp o vnoremap o "oy:sp o " Replace all is aliased to S. nnoremap S :%s//g nnoremap Ы :%s//g " Compile document map c :!doccompiler % map с :!doccompiler % " Spell-check set to F2: map :setlocal spell! spelllang=en_us,es,ru " Save changes noremap s :update noremap ы :update " Copy to clipboard vnoremap y "+y nnoremap Y "+yg_ nnoremap y "+y nnoremap yy "+yy " with russian layout vnoremap н "+y nnoremap Н "+yg_ nnoremap н "+y nnoremap нн "+yy " Paste from clipboard nnoremap p "+p nnoremap P "+P vnoremap p "+p vnoremap P "+P " with russian layout nnoremap з "+p nnoremap З "+P vnoremap з "+p vnoremap З "+P " Enable autocompletion: set wildmode=list:longest,full set wildmenu " Automatically deletes all tralling whitespace on save. "autocmd BufWritePre * %s/\s\+$//e " Runs a script that cleans out tex build files whenever I close out of a .tex file. autocmd VimLeave *.tex !texclear % " Disables automatic commenting on newline: autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o " C-T for new tab nnoremap :tabe " Navigating with guides inoremap /<++>"_c4l vnoremap /<++>"_c4l map /<++>"_c4l inoremap ;gui <++> inoremap жпгш <++> inoremap ñgui <++> " Replace ex mode with gq map Q gq " with russian layout map Й gq " For normal mode when can't remap caps to escape inoremap jw inoremap wj " SuperTab let g:SuperTabDefaultCompletionType = "context" let g:SuperTabContextDefaultCompletionType = "" " NERDTree map r :NERDTreeToggle map к :NERDTreeToggle " FZF map f :FZF map а :FZF " Open new terminal in current directory map t :!setsid $TERMINAL & map е :!setsid $TERMINAL & " Tagbar map :TagbarToggle " LSP let g:LanguageClient_serverCommands = { \ 'c': ['/usr/bin/clangd'], \ 'go': ['/usr/bin/gopls'], \ 'cpp': ['/usr/bin/clangd'], \ 'python': ['/usr/bin/pyls'], \ 'rust': ['/usr/bin/rustup', 'run', 'stable', 'rls'], \ 'javascript': ['/usr/bin/typescript-language-server', '--stdio'], \ } " LanguageClient-neovim nmap m (lcn-menu) nmap gd (lcn-definition) " Goyo let g:goyo_width = 100 map g :Goyo " File format preferences autocmd FileType rust setlocal noet ci pi sts=0 ts=4 sw=4 tw=80 autocmd FileType meson setlocal noet ci pi sts=0 ts=4 sw=4 tw=80 autocmd FileType tex setlocal spell spelllang=en_us,es,ru tw=80 | \ let b:SuperTabContextDefaultCompletionType = "" autocmd FileType text setlocal spell spelllang=en_us,es,ru tw=80 | \ let b:SuperTabContextDefaultCompletionType = "" autocmd FileType mail setlocal spell spelllang=en_us,es,ru tw=72 | \ let b:SuperTabContextDefaultCompletionType = "" autocmd FileType markdown setlocal spell spelllang=en_us,es,ru tw=80 | \ let b:SuperTabContextDefaultCompletionType = "" " For project-specific configuration set exrc set secure