diff options
Diffstat (limited to '.vimrc')
| -rw-r--r-- | .vimrc | 171 |
1 files changed, 171 insertions, 0 deletions
@@ -0,0 +1,171 @@ +"" +" Basics + +filetype on +syntax on +set encoding=utf-8 + +"" +" Global stuff + +" Show matched result. +set showmatch + +" Don't show the current command in the lower right corner. +set showcmd + +" Show numbers. +set number +set relativenumber + +" Don't show the mode, since this will be shown by the status line. +set noshowmode + +" Make sure that unsaved buffers that are to be put in the background are +" allowed to go in there (ie. the "must save first" error doesn't come up) +set hidden + +" Allow backspacing over everything in insert mode +set backspace=indent,eol,start + +" Don't wrap lines +set nowrap + +" I don't like the backup and the swapfile thingies. +set nobackup +set noswapfile + +" Use always the clipboard. +" NOTE: this only works if you have vim with clipboard support. You can check +" this by calling vim --version and see if you have +clipboard. +set clipboard=unnamed + +" Paste toggle +set pastetoggle=<f2> + +"" +" Colorscheme + +set background=dark +colorscheme xoria256 + +"" +" Setup the cursor for Konsole. +" NOTE: change this if you're not using Konsole or a program that makes use +" of the Konsole part. See +" http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes + +let &t_SI = "\<Esc>]50;CursorShape=1\x7" +let &t_EI = "\<Esc>]50;CursorShape=0\x7" + +"" +" Status line + +" Returns the mode we are currently. +function! Mode() + redraw + let l:mode = mode() + + if mode ==# "n" | return "NORMAL" + elseif mode ==# "i" | return "INSERT" + elseif mode ==# "R" | return "REPLACE" + elseif mode ==# "v" | return "VISUAL" + elseif mode ==# "V" | return "VISUAL-LINE" + elseif mode ==# "s" | return "SELECT" + elseif mode ==# "" | return "VISUAL-BLOCK" + else | return l:mode + endif +endfunc + +" My own status line. +set stl=\ %{Mode()}\ \|\ %f\ %m\ %r\ %=\ Line:\ %l\ Column:\ %v\ Buf:#%n + +" Always show the status line. +set laststatus=2 + +"" +" Searching stuff. + +" Ignore the case on search by default. +set ignorecase + +" Case sensitive if we start the search by an uppercase letter. +set smartcase + +" Find as you type search. +set incsearch + +"" +" Tabs, Indentation + +set textwidth=79 +set tabstop=2 +set shiftwidth=2 +set cindent +set autoindent +set smarttab +set expandtab +set backspace=indent,eol,start + +"" +" Plugins. + +filetype off +filetype indent plugin off + +" All the plugins are listed in my bundles file, that will be installed +" inside the ~/.vim directory. +source ~/.vim/bundles.vim + +" Enable plugins again. +filetype indent plugin on + +"" +" Everything regarding filetypes: indentation rules, gofmt & friends. + +source ~/.vim/autocmd.vim + +"" +" Re-mappings + +let g:mapleader = "," + +" Make window navigation easier. +nnoremap <C-j> <C-w>j +nnoremap <C-k> <C-w>k +nnoremap <C-h> <C-w>h +nnoremap <C-l> <C-w>l +nnoremap <leader>c :close<CR> +nnoremap <leader>v :vs<CR> +nnoremap <leader>V :vs<CR><C-w><C-l> + +" <C-s> in normal/insert mode: switch to normal mode and write to disk. +inoremap <C-s> <ESC>:w<CR> +nnoremap <C-s> :w<CR> + +" <C-q> is the same as @q (I use q to store macros). +nnoremap <C-q> @q + +" Pressing ^ in order to move to the first non-blank character is inconvenient. +nnoremap <leader>, ^ + +" The default behavior for <C-z> is simply useless: why would I want to stop +" the current `vim` process ? (especially shitty if you miss useful commands +" like <C-x> ...). +" +" Before I was remapping this to <nop>, but since switching to Emacs, I've +" started to use <C-z> as escape there in order to not overlap with an +" extremely used prefix. For consistency's sake, I'm also applying this to Vim. +nnoremap <C-z> <ESC> +inoremap <C-z> <ESC> + +" Do nothing for the <S-K> command. I never use it and it appears when I +" misstype <S-J>. +nnoremap K <nop> + +" Do nothing for <c-o>. I don't use this feature and it confuses me whenever I +" misstype <c-p> (CtrlP plugin). +nnoremap <c-o> <nop> + +" Set paste temporarily to just paste what we have on the registry. +nnoremap <leader>p :set paste<cr>p:set nopaste<cr> |
