Skip to content

Instantly share code, notes, and snippets.

@andersevenrud
Created March 9, 2016 13:53
Show Gist options
  • Save andersevenrud/25bcc7720ffecd26efaa to your computer and use it in GitHub Desktop.
Save andersevenrud/25bcc7720ffecd26efaa to your computer and use it in GitHub Desktop.
vimrc
" Enable filetype plugin
filetype plugin on
filetype indent on
" Filetypes and encoding
set fileformats=unix,dos,mac
set encoding=utf-8
set wildignore=.svn,CVS,*.o,*.a,*.class,*.mo,*.la,*.so,*.obj,*.swp,*.jpg,*.png,*.xpm,*.gif
" General behaviour
set autochdir " CWD is always same as current file
set ai " Autoident
"set si " Smartident
set nowrap " Do not wrap lines
set nocompatible " ViM settings instead of Vi
set smartcase " Smart casing when searching
set ignorecase " ... or ignore casing
set hlsearch " Highlight matches
set incsearch " Modern (wrapping) search
set history=500 " Long undo history
set tw=1000
" make backspace a more flexible
set backspace=indent,eol,start
" Disable sounds
set vb t_vb="
set noerrorbells
set visualbell
" Tabbing, Default to 2 spaces as tabs
set cino=:0g0(0,W2
set expandtab
set tabstop=2
set softtabstop=2
set shiftwidth=2
" Filetype sesific
"au FileType python setlocal tabstop=4 softtabstop=4 shiftwidth=4
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" User interface setings
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syntax on
colorscheme desert
set showmatch " Show matching braces when over one
set ruler " Always show current position
set number " Always show line-numbers
set numberwidth=5 " Line-number margin width
set mousehide " Do not show mouse while typing
set antialias " Pretty fonts
set t_Co=256 " 256-color palletes
set background=dark " Dark background variation of theme
set guifont=Monaco\ 7.5 " Monospaced small font
set guioptions-=T " TODO
set guioptions+=c " TODO Console messages
set linespace=0 " Don't insert any extra pixel lines
set lazyredraw " Don't redraw while running macros
set wildmenu " Wild menu
set wildmode=longest,list,full " Wild menu options
" Display special characters and helpers
set list
" Show < or > when characters are not displayed on the left or right.
" Also show tabs and trailing spaces.
set list listchars=nbsp:¬,tab:>-,trail:.,precedes:<,extends:>
" Autocompletion
set ofu=syntaxcomplete#Complete
set completeopt+=longest,menuone
highlight Pmenu guibg=brown gui=bold
let g:SuperTabDefaultCompletionType = "<C-x><C-o>"
" Statusline
set statusline=%F%m%r%h%w[%L][%{&ff}]%y[%p%%][%04l,%04v]
" | | | | | | | | | | |
" | | | | | | | | | | + current
" | | | | | | | | | | column
" | | | | | | | | | +-- current line
" | | | | | | | | +-- current % into file
" | | | | | | | +-- current syntax in
" | | | | | | | square brackets
" | | | | | | +-- current fileformat
" | | | | | +-- number of lines
" | | | | +-- preview flag in square brackets
" | | | +-- help flag in square brackets
" | | +-- readonly flag in square brackets
" | +-- rodified flag in square brackets
" +-- full path to file in the buffer
" Highlight trailing whitespaces (+ keybindings below)
highlight ExtraWhitespace ctermbg=red guibg=red
highlight ExtraWhitespace ctermbg=darkgreen guibg=darkgreen
au InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
au InsertLeave * match ExtraWhitespace /\s\+$/
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Key mappings
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
" RESIZE with numlock +-/*
if bufwinnr(1)
map + <C-W>+
map - <C-W>-
endif
"<home> toggles between start of line and start of text
imap <khome> <home>
nmap <khome> <home>
inoremap <silent> <home> <C-O>:call HHome()<CR>
nnoremap <silent> <home> :call HHome()<CR>
function! HHome()
let curcol = wincol()
normal ^
let newcol = wincol()
if newcol == curcol
normal 0
endif
endfunction
"<end> goes to end of screen before end of line
imap <kend> <end>
nmap <kend> <end>
inoremap <silent> <end> <C-O>:call HEnd()<CR>
nnoremap <silent> <end> :call HEnd()<CR>
function! HEnd()
let curcol = wincol()
normal g$
let newcol = wincol()
if newcol == curcol
normal $
endif
"http://www.pixelbeat.org/patches/vim-7.0023-eol.diff
if virtcol(".") == virtcol("$") - 1
normal $
endif
endfunction
"Ctrl-{up,down} to scroll. (gvim)
if has("gui_running")
nmap <C-up> <C-y>
imap <C-up> <C-o><C-y>
nmap <C-down> <C-e>
imap <C-down> <C-o><C-e>
endif
if bufwinnr(1)
map <kPlus> <C-W>+
map <kMinus> <C-W>-
map <kDivide> <c-w><
map <kMultiply> <c-w>>
endif
" For highlighting trailing whitespaces
nnoremap <Leader>wn :match ExtraWhitespace /^\s* \s*\<Bar>\s\+$/<CR>
nnoremap <Leader>wf :match<CR>
" space / shift-space scroll in normal mode
noremap <S-space> <C-b>
noremap <space> <C-f>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment