set nocompatible " be iMproved, required " Reconfigure Vim to be clean! set rtp+=~/.config/vim set directory=.,~/.config/vim set viminfo+=n~/.config/vim/viminfo set directory=$HOME/.config/vim/swapfiles// syntax enable filetype plugin on set tabstop=4 set shiftwidth=0 " Use tabstop set softtabstop=-1 " Use tabstop set expandtab set smarttab set smartindent set number set linebreak set autoindent set laststatus=2 set encoding=utf-8 set background=dark set omnifunc=syntaxcomplete#Complete set title set clipboard=unnamed set wildmenu set report=0 set lazyredraw set ttyfast set autoread set showmatch set scrolloff=6 set nojoinspaces " Autosave settings function SaveIfExist() if @% != "" && filereadable(@%) write endif endfunction set autowrite autocmd InsertLeave * call SaveIfExist() " Search options set hlsearch set ignorecase set smartcase " GVim settings set guifont=Sauce\ Code\ Pro\ 10.5 set guioptions= " Whitespace highlight settings set list set listchars=eol:$,space:.,tab:>-,trail:~,extends:>,precedes:< highlight SpecialKey ctermfg=8 if exists('+colorcolumn') highlight ColorColumn ctermbg=8 autocmd filetype c,h,cpp,hpp set colorcolumn=81 autocmd filetype c,h,cpp,hpp match ErrorMsg '\%>80v.\+' endif " set the runtime path to include Vundle and initialize set rtp+=~/.config/vim/bundle/Vundle.vim call vundle#begin() call vundle#rc('~/.config/vim/bundle') Plugin 'VundleVim/Vundle.vim' Plugin 'Valloric/YouCompleteMe' Plugin 'scrooloose/syntastic' Plugin 'tpope/vim-sensible' Plugin 'tpope/vim-fugitive' Plugin 'tpope/vim-rhubarb' Plugin 'tpope/vim-abolish' Plugin 'airblade/vim-gitgutter' Plugin 'ryanoasis/vim-devicons' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'PotatoesMaster/i3-vim-syntax' Plugin 'lervag/vimtex' Plugin 'JamshedVesuna/vim-markdown-preview' call vundle#end() " Change to dvorak-mapped keys let g:use_dvorak = 1 " YouCompleteMe config let g:ycm_confirm_extra_conf = 0 " Vim-Airline config let g:Powerline_symbols = 'fancy' let g:airline_powerline_fonts = 1 let g:airline_theme='solarized' let g:airline#extensions#tabline#enabled = 1 " vim-markdown plugin let vim_markdown_preview_toggle=0 let vim_markdown_preview_browser='Chromium' let vim_markdown_preview_use_xdg_open=1 let vim_markdown_preview_github=1 " Disable mouse set mouse=nicr nnoremap nnoremap " Remap completion inoremap inoremap let mapleader="\" " Unbind arrow keys for prefix in ['n', 'v'] for key in ['', '', '', ''] exe prefix . "noremap " . key . " " endfor endfor " Dvorak Hackery " Source: https://github.com/sporkbox/vimrc/blob/master/vimrc if (exists("g:use_dvorak") && g:use_dvorak == 1) " I use a Dvorak keyboard, so standard vim movement keys are a hassle. " Since mnemonics are helpful all around, I need a mapping that gives me " pain-free file navigation without screwing up mnemonics (too much). " " Thus: " (D)elete is now (K)ill: d2w == k2w "kill 2 words" " Un(T)il is now (J)ump-To: dt( == kj( "kill, jump-to paren" " (N)ext is now (L)eap: cn == cl "change up to leap point" " Standard movement, which is the true focus of this hack. " Mnemonics are awesome, so let's preserve as much as possible. noremap d h noremap h j noremap t k noremap n l noremap D H noremap H J noremap T K noremap N L noremap gh gj noremap gt gk " I work with tabs every now and then. No, I don't have a mnemonic, so " stfu. noremap gj gt noremap gJ gT " Window movement, equally important noremap d h noremap h j noremap t k noremap n l nnoremap nnoremap nnoremap nnoremap nnoremap h nnoremap j nnoremap k nnoremap l " Account for tag jumping nnoremap " Remappings for the D key noremap k d noremap K D " Remappings for the T key noremap j t "noremap J T " Remapping for the L key noremap l n noremap L N " General purpose help; the originals remain for convenience noremap - 0 noremap _ $ " Fold-related keybindings noremap zh zj noremap zt zk " Disable some default vimtex mappings that conflict with rebound keys let g:vimtex_mappings_disable = { \ 'n': ['tse', 'tsd', 'tsD', 'tsc', 'dse', 'dsc', 'ds$', 'dsd'], \ 'x': ['tsd', 'tsD'], \} endif " Save aliases. noremap q :wq com W w com Q q com Wq wq com WQ wq " Write with sudo cmap w!! w !sudo tee > /dev/null % autocmd FileType markdown setlocal ts=2 sts=2 sw=2 et autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et autocmd FileType tex silent VimtexCompile autocmd FileType tex setlocal spell