diff options
Diffstat (limited to '')
-rw-r--r-- | .vimrc.full | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/.vimrc.full b/.vimrc.full new file mode 100644 index 00000000..a6ce2641 --- /dev/null +++ b/.vimrc.full @@ -0,0 +1,304 @@ +" Do not try to behave like vi. +set nocompatible + +" Allow backspace in insert mode to delete past the beginning of the line. +set backspace=indent,eol,start + +" Keep buffers loaded even when they aren't shown. Allows switching buffers +" without saving first. +set hidden + +" Keep 50 lines of : command history and search patterns. +set history=50 + +" Show the cursor position in the bottom right. +set ruler + +" Show partial command in the bottom right (i.e. if a command is started but +" needs a motion, it will be shown). +set showcmd + +" Jump to search results while typing. Pressing enter actually jumps to the +" result, pressing escape goes back to the cursor. +set incsearch + +" Perform case-insensitive searching when the search pattern contains only +" lowercase letters. +set ignorecase +set smartcase + +" Copy the indent from the previous line when starting a new line. +" Automatically indent between curly braces and indent keywords. +set autoindent +set smartindent + +" Show line numbers. +set number + +" Perform spell-checking on strings and comments. +set spell + +" Highlight the 80th, 100th and 120th columns. +set colorcolumn=80,100,120 + +" Set the window title with the current file name, status and directory. +set title + +" Make file messages shorter: +" - a: Shorten all file description messages +" - t: Truncate file messages if they are too long +" - I: Do not show the intro message when Vim starts +set shortmess=atI + +" Disable beeping and visual bell (flashing the terminal window). +set visualbell t_vb= + +" Highlight the current line. +set cursorline + +" Insert `shiftwidth` spaces at the beginning of a line when tab is pressed, +" delete `shiftwidth` spaces when backspace is pressed. +set smarttab + +" Highlight all search matches. +set hlsearch + +" Show hard tabs and trailing whitespace. +set list +set listchars=tab:»·,trail:· + + +" Fold by syntax, start with all folds open. +set foldmethod=syntax +set foldlevelstart=99 + +" Always show the status line. +set laststatus=2 + +" Always show one line above or below the cursor. +set scrolloff=1 + +" Ctrl-A and Ctrl-X work on hex and single letters +set nrformats=alpha,hex + +" Enable syntax highlighting. +syntax on + +" Enable mouse in terminals +if has('mouse') + set mouse=a +endif + +" Disable spell-checking in terminal Vim. +if !has('gui_running') + set nospell +endif + +" GUI options: +" * -m: Disable menu bar +" * -r: Disable right scroll bar +" * -L: Disable left scroll bar +" * -T: Disable toolbar +" * +c: Use console dialogs +set guioptions-=m +set guioptions-=r +set guioptions-=L +set guioptions-=T +set guioptions+=c + +" Use a font. +set guifont=ProFont:h11 + +" Jump to the last cursor position when opening a file. +au BufReadPost * if &filetype !~ '^git\c' && line("'\"") > 0 && line("'\"") <= line("$") + \| exe "normal! g`\"" | endif + +" Use two-space indents. +set expandtab +set shiftwidth=2 + +" Round to the nearest multiple of `shiftwidth` when indenting. +set shiftround + +" Show hard tabs as 4 characters wide. +set tabstop=4 + + +" Load filetype plugins and indentation rules. +filetype plugin indent on + +" Use 4-space indents in C, C++ and Lua. +autocmd FileType c,cpp,lua setlocal sw=4 + +" Hard-wrap text at 72 characters in Markdown. +autocmd FileType markdown setlocal tw=72 + +" C/C++ indentation options: +" * :0 Align `case` with `switch` +" * l1 Indent case bodies with braces to case +" * g0 Align `public:` and friends to class +set cinoptions=:0,l1,g0 + +" Show tab-complete suggestions when typing in the command-line. List all +" matches and complete to the longest common string. Ignore output files and +" backups. +set wildmenu +set wildmode=list:longest +set wildignore=*.o,*.d,*~ + +" Smarter % matching on HTML tags, if/endif etc. +runtime macros/matchit.vim + +" Do not show whitespace in insert mode. +autocmd InsertEnter * setlocal nolist +autocmd InsertLeave * setlocal list + +" Set leader to , and remap , to \. +noremap \ , +let mapleader = "," + +" Swap ' and ` (' is now character-wise and ` is line-wise). +nnoremap ' ` +nnoremap ` ' + +" Swap 0 and ^ (0 now moves to the first non-whitespace character). +nnoremap 0 ^ +nnoremap ^ 0 + +" Clear search result highlighting. +nmap <leader>n :nohlsearch<CR> + +" Toggle visible whitespace. +nmap <leader>s :set list!<CR> + +" Toggle spell checking. +nmap <leader>z :set spell!<CR> + +" Cut/copy/paste to system clipboard. +nmap <leader>p "+p +nmap <leader>P "+P +nmap <leader>y "+y +nmap <leader>Y "+Y +nmap <leader>d "+d +nmap <leader>D "+D + +" Yank to end of line. +nmap Y y$ + +" Insert hard tab. +imap <S-tab> <C-v><tab> + +" Toggle relative/absolute line numbers. +nmap <C-n> :set relativenumber!<CR> + +" Common typos. +command! W :w +command! Q :q + +" Plugins + +call plug#begin('~/.vim/plugged') + +" Fancy statusline. +Plug 'bling/vim-airline' +" Don't show mode in last line. +set noshowmode +" Disable silly > separators. +let g:airline_left_sep = '' +let g:airline_right_sep = '' +" Only show diff stats if there are some. +let g:airline#extensions#hunks#non_zero_only = 1 +" Don't complain about whitespace constantly. +let g:airline#extensions#whitespace#enabled = 0 + +" Syntax checking. +Plug 'scrooloose/syntastic' +let g:syntastic_check_on_open=1 +let g:syntastic_enable_signs=0 + +" Git diff signs in margins. +Plug 'mhinz/vim-signify' +let g:signify_vcs_list = ['git'] +let g:signify_sign_overwrite = 1 +let g:signify_sign_change = '~' + +" Fuzzy matching files/buffers. +Plug 'kien/ctrlp.vim' +nmap <leader>b :CtrlPBuffer<CR> +nmap <leader>e :CtrlP<CR> +nmap <leader>t :CtrlPBufTag<CR> +nmap <leader>l :CtrlPLine<CR> + +" Git commands. +Plug 'tpope/vim-fugitive' +nmap <leader>gs :Gstatus<CR> +nmap <leader>gc :Gcommit<CR> +nmap <leader>gp :Git push<CR> + +" Alignment of = : , etc. +Plug 'junegunn/vim-easy-align' +vnoremap <silent> <Enter> :EasyAlign<Enter> + +" Auto-close braces, parens, quotes, etc. +Plug 'Raimondi/delimitMate' +let delimitMate_expand_cr = 1 +let delimitMate_expand_space = 1 +let delimitMate_jump_expansion = 1 + +" Indent guides by alternating background colour. (<leader>ig) +Plug 'nathanaelkane/vim-indent-guides' +let g:indent_guides_start_level = 2 + +" Distraction-free editing +Plug 'junegunn/goyo.vim' +Plug 'junegunn/limelight.vim' +nmap <leader>G :Goyo<CR> +autocmd User GoyoEnter Limelight +autocmd User GoyoLeave Limelight! + +" Colorschemes. +Plug 'programble/jellybeans.vim' +Plug 'programble/vim-hybrid' +Plug 'morhetz/gruvbox' +" Show nearest tag in statusline. +Plug 'majutsushi/tagbar' +" Scratch buffers. +Plug 'programble/itchy.vim' +" Better paste indentation. +Plug 'sickill/vim-pasta' +" Commenting. +Plug 'tpope/vim-commentary' +" Surround text objects. +Plug 'tpope/vim-surround' +" Increment, decrement dates and roman numerals with C-a, C-x. +Plug 'tpope/vim-speeddating' +" File-related commands. +Plug 'tpope/vim-eunuch' +" Highlight color values with their color in CSS. +Plug 'ap/vim-css-color' +" Swap two selections. +Plug 'tommcdo/vim-exchange' + +" Language support. +Plug 'digitaltoad/vim-jade' +Plug 'groenewege/vim-less' +Plug 'kchmck/vim-coffee-script' +Plug 'pangloss/vim-javascript' +Plug 'tpope/vim-markdown' +Plug 'tpope/vim-ragtag' + +Plug 'Z1MM32M4N/vim-superman' + +Plug 'kshenoy/vim-signature' + +call plug#end() + +set background=dark +let g:gruvbox_termcolors = 16 +let g:gruvbox_italic = 0 +let g:gruvbox_invert_selection = 0 +let g:gruvbox_sign_column = 'dark0' +let g:gruvbox_vert_split = 'dark0' +set fillchars+=vert:│ +colorscheme gruvbox +let g:airline_theme = 'tomorrow' |