Created
December 16, 2010 19:50
-
-
Save simonklee/743892 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" Sets how many lines of history VIM has to remember | |
set history=700 | |
" Enable filetype plugin | |
filetype plugin on | |
filetype indent on | |
" map leader | |
let mapleader = "," | |
let g:mapleader = "," | |
" Set 7 lines to the curors - when moving vertical.. | |
set so=7 | |
" set wildmenu "Turn on WiLd menu | |
set ruler "Always show current position | |
set cmdheight=1 "The commandbar height | |
set hid "Change buffer - without saving | |
" Set backspace config | |
set backspace=eol,start,indent | |
set whichwrap+=<,>,h,l | |
set ignorecase "Ignore case when searching | |
set smartcase | |
set hlsearch "Highlight search things | |
set incsearch "Make search act like search in modern browsers | |
set nolazyredraw "Don't redraw while executing macros | |
set magic "Set magic on, for regular expressions | |
set showmatch "Show matching bracets when text indicator is over them | |
set mat=2 "How many tenths of a second to blink | |
" No sound on errors | |
set noerrorbells | |
set novisualbell | |
set t_vb= | |
set tm=500 | |
set nofoldenable | |
" Colors and Fonts | |
syntax enable "Enable syntax hl | |
" Set font according to system | |
set gfn=courier\ new\ 10 | |
set shell=/bin/bash | |
colorscheme synic | |
set background=dark | |
set nonu | |
set encoding=utf8 | |
try | |
lang en_US | |
catch | |
endtry | |
set ffs=unix "Default file types | |
" Turn backup off | |
set nobackup | |
set nowb | |
set noswapfile | |
" Text, tab and indent | |
set expandtab | |
set shiftwidth=4 | |
set tabstop=4 | |
set smarttab | |
set lbr | |
set tw=500 | |
set ai "Auto indent | |
set si "Smart indet | |
set nowrap "Wrap lines | |
" In visual mode when you press * or # to search for the current selection | |
vnoremap <silent> * :call VisualSearch('f')<CR> | |
vnoremap <silent> # :call VisualSearch('b')<CR> | |
" When you press gv you vimgrep after the selected text | |
vnoremap <silent> gv :call VisualSearch('gv')<CR> | |
map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left> | |
function! CmdLine(str) | |
exe "menu Foo.Bar :" . a:str | |
emenu Foo.Bar | |
unmenu Foo | |
endfunction | |
function! VisualSearch(direction) range | |
let l:saved_reg = @" | |
execute "normal! vgvy" | |
let l:pattern = escape(@", '\\/.*$^~[]') | |
let l:pattern = substitute(l:pattern, "\n$", "", "") | |
if a:direction == 'b' | |
execute "normal ?" . l:pattern . "^M" | |
elseif a:direction == 'gv' | |
call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.') | |
elseif a:direction == 'f' | |
execute "normal /" . l:pattern . "^M" | |
endif | |
let @/ = l:pattern | |
let @" = l:saved_reg | |
endfunction | |
" Smart mappings on the command line cno $h e ~/ | |
cno $d c <C-\>eCurrentFileDir("e")<cr> | |
cno $j e ./ | |
cno $c e <C-\>eCurrentFileDir("e")<cr> | |
" $q is super useful when browsing on the command line | |
cno $q <C-\>eDeleteTillSlash()<cr> | |
" Bash like keys for the command line | |
cnoremap <C-A> <Home> | |
cnoremap <C-E> <End> | |
cnoremap <C-K> <C-U> | |
cnoremap <C-P> <Up> | |
cnoremap <C-N> <Down> | |
func! Cwd() | |
let cwd = getcwd() | |
return "e " . cwd | |
endfunc | |
func! DeleteTillSlash() | |
let g:cmd = getcmdline() | |
let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*", "\\1", "") | |
if g:cmd == g:cmd_edited | |
let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*/", "\\1", "") | |
endif | |
return g:cmd_edited | |
endfunc | |
func! CurrentFileDir(cmd) | |
return a:cmd . " " . expand("%:p:h") . "/" | |
endfunc | |
" Map space to / (search) and c-space to ? (backgwards search) | |
map <space> / | |
map <c-space> ? | |
map <silent> <leader><cr> :noh<cr> | |
" Smart way to move | |
map <C-j> <C-W>j | |
map <C-k> <C-W>k | |
map <C-h> <C-W>h | |
map <C-l> <C-W>l | |
" When pressing <leader>cd switch to the directory of the open buffer | |
map <leader>cd :cd %:p:h<cr> | |
command! Bclose call <SID>BufcloseCloseIt() | |
function! <SID>BufcloseCloseIt() | |
let l:currentBufNum = bufnr("%") | |
let l:alternateBufNum = bufnr("#") | |
if buflisted(l:alternateBufNum) | |
buffer # | |
else | |
bnext | |
endif | |
if bufnr("%") == l:currentBufNum | |
new | |
endif | |
if buflisted(l:currentBufNum) | |
execute("bdelete! ".l:currentBufNum) | |
endif | |
endfunction | |
" Specify the behavior when switching between buffers | |
try | |
set switchbuf=usetab | |
set stal=2 | |
catch | |
endtry | |
" Statusline | |
" Always hide the statusline | |
set laststatus=2 | |
" Format the statusline | |
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c | |
function! CurDir() | |
let curdir = substitute(getcwd(), '/user/simon/', "~/", "g") | |
return curdir | |
endfunction | |
function! HasPaste() | |
if &paste | |
return 'PASTE MODE ' | |
else | |
return '' | |
endif | |
endfunction | |
iab xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr> | |
map 0 ^ | |
" Delete trailing white space | |
func! DeleteTrailingWS() | |
exe "normal mz" | |
%s/\s\+$//ge | |
exe "normal `z" | |
endfunc | |
autocmd BufWrite *.py :call DeleteTrailingWS() | |
set guitablabel=%t | |
" Explorer | |
map <tab> :bn<cr> | |
map <C-tab> :bp<cr> | |
let g:bufExplorerDefaultHelp=0 | |
let g:bufExplorerShowRelativePath=1 | |
map <leader>o :BufExplorer<cr> | |
let g:miniBufExplModSelTarget = 1 | |
let g:miniBufExplorerMoreThanOne = 2 | |
let g:miniBufExplModSelTarget = 0 | |
let g:miniBufExplUseSingleClick = 1 | |
let g:miniBufExplMapWindowNavVim = 1 | |
let g:miniBufExplVSplit = 25 | |
let g:miniBufExplSplitBelow=1 | |
let g:bufExplorerSortBy = "name" | |
autocmd BufRead,BufNew :call UMiniBufExplorer | |
map <leader>u :TMiniBufExplorer<cr> | |
" Spell checking | |
map <leader>ss :setlocal spell!<cr> | |
" Markdown section | |
au FileType markdown set linebreak | |
au Filetype markdown set textwidth=80 | |
au FileType markdown set wrapmargin=4 | |
au FileType markdown set syntax=off | |
" Latex | |
au FileType tex set linebreak | |
au Filetype tex set textwidth=80 | |
au FileType tex set wrapmargin=4 | |
" Python section | |
let python_highlight_all = 1 | |
" JavaScript | |
au FileType javascript inoremap <buffer> $r return | |
au FileType javascript inoremap <buffer> $f //--- PH ----------------------------------------------<esc>FP2xi | |
" Vim grep | |
let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated' | |
set grepprg=/bin/grep\ -nH | |
" Remove the Windows ^M - when the encodings gets messed up | |
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm | |
"Quickly open a buffer for scripbble | |
map <leader>q :e ~/buffer<cr> | |
au BufRead,BufNewFile ~/buffer iab <buffer> xh1 =========================================== |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment