X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/976f75b5442f919820b94cc241e6c64f2c017dfd..89927a18aec1125415cef6788bc3190c6e25d664:/vimrc diff --git a/vimrc b/vimrc index 99d28ba..13d2097 100644 --- a/vimrc +++ b/vimrc @@ -1,43 +1,77 @@ " My vimrc file. " -" Maintainer: Samir Benmendil +" Author: Samir Benmendil " -if v:progname =~? "evim" - finish -endif - -" TODO -" organize this file, never thought it'll get this big -" TODO - " pathogen.vim runtime path manipulation silent! call pathogen#infect() -" Use Vim settings, rather than Vi settings (much better!). -" This must be first, because it changes other options as a side effect. -set nocompatible - -" allow backspacing over everything in insert mode -set backspace=indent,eol,start - -if has("vms") - set nobackup " do not keep a backup file, use versions instead -else - set backup " keep a backup file - set backupdir=$HOME/.vim/backupdir -endif -set history=50 " keep 50 lines of command line history -set ruler " show the cursor position all the time -set showcmd " display incomplete commands -set incsearch " do incremental searching -set number " show some linenumbers -" viminfo defaults but save file in .vim -set viminfo='100,<50,s10,h,n~/.vim/viminfo - -" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries -" let &guioptions = substitute(&guioptions, "t", "", "g") +" search {{{1 +set incsearch +set ignorecase +set smartcase +set hlsearch +" use leader-n to unhighlight search +nmap n :silent nohl +" use leader-# to display the number of matches for the last search +nmap # :%s:/::gn + +" line wrap {{{1 +set backspace=indent,eol,start " allow backspacing over everything in insert mode +set wrap " wrap lines +set linebreak " do not wrap in the middle of a word +set showbreak=▒▒ " show these chars for wrapped lines + +" backup/undo {{{1 +set backup " keep a backup file +set backupdir=$HOME/.vim/backupdir + +set undofile " persistent undo history +set undodir=$HOME/.vim/backupdir + +" NERDTree {{{1 +" open/close NERDTree with \e +nmap e :NERDTreeToggle +" to open files/dirs +let NERDTreeMapActivateNode='' +" open NERDTree if no files were selected +autocmd vimenter * if !argc() | NERDTree | endif +" close vim if only NERDTree is open +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif + +" airline {{{1 +let g:airline#extensions#tabline#enabled = 1 + +" tabbing {{{1 +:nmap b :set expandtab tabstop=4 shiftwidth=4 softtabstop=4 +:nmap B :set expandtab tabstop=8 shiftwidth=8 softtabstop=4 +:nmap M :set noexpandtab tabstop=8 softtabstop=4 shiftwidth=4 +:nmap m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2 + +" appearance {{{1 +set background=dark " Dark background, d'uh! +set number " show some linenumbers +set showmatch " Show matching brackets. +set list listchars=tab:»·,trail:· " show these chars for tabs and trailing spaces + +" misc options {{{1 +set history=500 " keep 500 lines of command line history +set ruler " show the cursor position all the time +set confirm " Ask what to do when closing unsaved documents +set showcmd " Show (partial) command in status line. +set autowrite " Automatically save before commands like :next and :make +"set hidden " Hide buffers when they are abandoned +set splitright " split right when using :vsp +set scrolloff=5 " keep at least n lines above/below + +set viminfo='100,<50,s10,h,n~/.vim/viminfo " viminfo defaults but save file in .vim + +" tabs {{{1 +set softtabstop=4 +set shiftwidth=4 +set expandtab +" misc bindings {{{1 " Don't use Ex mode, use Q for formatting map Q gq @@ -45,33 +79,37 @@ map Q gq " so that you can undo CTRL-U after inserting a line break. inoremap u -"paste toggle +" Press `` to toggle insert and replace mode (no key on Mac keyboard) +imap `` + +" paste toggle {{{1 nmap :set paste! paste? imap :set paste! vmap :set paste!gv -set pastetoggle= +set pastetoggle= +" mouse {{{1 " In many terminal emulators the mouse works just fine, thus enable it. -"if has('mouse') -" "xterm mouse with middleclick paste -" nnoremap i -" vnoremap s -" set mouse=rnv -" "choose either one -" set ttymouse=xterm -" "set ttymouse=xterm2 -"endif +if has('mouse') + "xterm mouse with middleclick paste + nnoremap i + vnoremap s + set mouse=rnv + "choose either one + set ttymouse=xterm + "set ttymouse=xterm2 +endif +" syntax {{{1 " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on - set hlsearch endif +" autocmd {{{1 " Only do this part when compiled with support for autocommands. if has("autocmd") - " Enable file type detection. " Use the default filetype settings, so that mail gets 'tw' set to 72, " 'cindent' is on in C files, etc. @@ -98,13 +136,11 @@ if has("autocmd") \ endif augroup END - else - set autoindent " always set autoindenting on - endif " has("autocmd") +" DiffOrig {{{1 " Convenient command to see the difference between the current buffer and the " file it was loaded from, thus the changes you made. " Only define it when not defined already. @@ -113,44 +149,7 @@ if !exists(":DiffOrig") \ | wincmd p | diffthis endif -" Ask what to do when closing unsaved documents -set confirm - -" If using a dark background within the editing area and syntax highlighting -" turn on this option as well -set background=dark - -" The following are commented out as they cause vim to behave a lot -" differently from regular Vi. They are highly recommended though. -set showcmd " Show (partial) command in status line. -set showmatch " Show matching brackets. -set ignorecase " Do case insensitive matching -set smartcase " Do smart case matching -set incsearch " Incremental search -set autowrite " Automatically save before commands like :next and :make -"set hidden " Hide buffers when they are abandoned -"set mouse=a " Enable mouse usage (all modes) - -" expand tabs -set softtabstop=4 -set shiftwidth=4 -set expandtab - -set showbreak=▒▒ -" show these chars for tabs and trailing spaces -set list listchars=tab:»·,trail:· - -set pastetoggle= -" split right when using :vsp -set splitright - -set scrolloff=3 " keep at least 3 lines above/below -" Press i to enter insert mode, and ii to exit. -imap ii -" Press `` to toggle insert and replace mode (no key on Mac keyboard) -imap `` - -" fold between {{{ }}} +" fold {{{1 set foldmethod=marker set foldlevelstart=99 " space will toggle current fold in normal mode, if not in a fold, normal @@ -161,6 +160,7 @@ vnoremap zf autocmd BufWinLeave *.* mkview autocmd BufWinEnter *.* silent loadview +function! NextIndent(exclusive, fwd, lowerlevel, skipblanks) " {{{1 " Jump to the next or previous line that has the same level or a lower " level of indentation than the current line. " @@ -172,7 +172,6 @@ autocmd BufWinEnter *.* silent loadview " false: Go to line with the same indentation level " skipblanks (bool): true: Skip blank lines " false: Don't skip blank lines -function! NextIndent(exclusive, fwd, lowerlevel, skipblanks) let line = line('.') let column = col('.') let lastline = line('$')