Created
July 31, 2015 23:10
-
-
Save Artiavis/c8374d1a55d16a410285 to your computer and use it in GitHub Desktop.
This file contains 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
" Basics | |
set nocompatible | |
filetype plugin indent on | |
syntax on | |
scriptencoding utf-8 | |
set history=1000 | |
set hidden | |
set iskeyword-=. | |
set iskeyword-=# | |
set iskeyword-=- | |
" Setting up directories | |
set backup " Set backups | |
if has('persisent_undo') | |
set undofile | |
set undolevels=1000 | |
set undoreload=10000 | |
endif | |
" UI | |
set t_Co=256 | |
" Vim color file | |
" | |
" Author: Tomas Restrepo <tomas@winterdom.com> | |
" https://github.com/tomasr/molokai | |
" | |
" Note: Based on the Monokai theme for TextMate | |
" by Wimer Hazenberg and its darker variant | |
" by Hamish Stuart Macpherson | |
" | |
hi clear | |
if version > 580 | |
" no guarantees for version 5.8 and below, but this makes it stop | |
" complaining | |
hi clear | |
if exists("syntax_on") | |
syntax reset | |
endif | |
endif | |
let g:colors_name="molokai" | |
if exists("g:molokai_original") | |
let s:molokai_original = g:molokai_original | |
else | |
let s:molokai_original = 0 | |
endif | |
hi Boolean guifg=#AE81FF | |
hi Character guifg=#E6DB74 | |
hi Number guifg=#AE81FF | |
hi String guifg=#E6DB74 | |
hi Conditional guifg=#F92672 gui=bold | |
hi Constant guifg=#AE81FF gui=bold | |
hi Cursor guifg=#000000 guibg=#F8F8F0 | |
hi iCursor guifg=#000000 guibg=#F8F8F0 | |
hi Debug guifg=#BCA3A3 gui=bold | |
hi Define guifg=#66D9EF | |
hi Delimiter guifg=#8F8F8F | |
hi DiffAdd guibg=#13354A | |
hi DiffChange guifg=#89807D guibg=#4C4745 | |
hi DiffDelete guifg=#960050 guibg=#1E0010 | |
hi DiffText guibg=#4C4745 gui=italic,bold | |
hi Directory guifg=#A6E22E gui=bold | |
hi Error guifg=#E6DB74 guibg=#1E0010 | |
hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold | |
hi Exception guifg=#A6E22E gui=bold | |
hi Float guifg=#AE81FF | |
hi FoldColumn guifg=#465457 guibg=#000000 | |
hi Folded guifg=#465457 guibg=#000000 | |
hi Function guifg=#A6E22E | |
hi Identifier guifg=#FD971F | |
hi Ignore guifg=#808080 guibg=bg | |
hi IncSearch guifg=#C4BE89 guibg=#000000 | |
hi Keyword guifg=#F92672 gui=bold | |
hi Label guifg=#E6DB74 gui=none | |
hi Macro guifg=#C4BE89 gui=italic | |
hi SpecialKey guifg=#66D9EF gui=italic | |
hi MatchParen guifg=#000000 guibg=#FD971F gui=bold | |
hi ModeMsg guifg=#E6DB74 | |
hi MoreMsg guifg=#E6DB74 | |
hi Operator guifg=#F92672 | |
" complete menu | |
hi Pmenu guifg=#66D9EF guibg=#000000 | |
hi PmenuSel guibg=#808080 | |
hi PmenuSbar guibg=#080808 | |
hi PmenuThumb guifg=#66D9EF | |
hi PreCondit guifg=#A6E22E gui=bold | |
hi PreProc guifg=#A6E22E | |
hi Question guifg=#66D9EF | |
hi Repeat guifg=#F92672 gui=bold | |
hi Search guifg=#000000 guibg=#FFE792 | |
" marks | |
hi SignColumn guifg=#A6E22E guibg=#232526 | |
hi SpecialChar guifg=#F92672 gui=bold | |
hi SpecialComment guifg=#7E8E91 gui=bold | |
hi Special guifg=#66D9EF guibg=bg gui=italic | |
if has("spell") | |
hi SpellBad guisp=#FF0000 gui=undercurl | |
hi SpellCap guisp=#7070F0 gui=undercurl | |
hi SpellLocal guisp=#70F0F0 gui=undercurl | |
hi SpellRare guisp=#FFFFFF gui=undercurl | |
endif | |
hi Statement guifg=#F92672 gui=bold | |
hi StatusLine guifg=#455354 guibg=fg | |
hi StatusLineNC guifg=#808080 guibg=#080808 | |
hi StorageClass guifg=#FD971F gui=italic | |
hi Structure guifg=#66D9EF | |
hi Tag guifg=#F92672 gui=italic | |
hi Title guifg=#ef5939 | |
hi Todo guifg=#FFFFFF guibg=bg gui=bold | |
hi Typedef guifg=#66D9EF | |
hi Type guifg=#66D9EF gui=none | |
hi Underlined guifg=#808080 gui=underline | |
hi VertSplit guifg=#808080 guibg=#080808 gui=bold | |
hi VisualNOS guibg=#403D3D | |
hi Visual guibg=#403D3D | |
hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold | |
hi WildMenu guifg=#66D9EF guibg=#000000 | |
hi TabLineFill guifg=#1B1D1E guibg=#1B1D1E | |
hi TabLine guibg=#1B1D1E guifg=#808080 gui=none | |
if s:molokai_original == 1 | |
hi Normal guifg=#F8F8F2 guibg=#272822 | |
hi Comment guifg=#75715E | |
hi CursorLine guibg=#3E3D32 | |
hi CursorLineNr guifg=#FD971F gui=none | |
hi CursorColumn guibg=#3E3D32 | |
hi ColorColumn guibg=#3B3A32 | |
hi LineNr guifg=#BCBCBC guibg=#3B3A32 | |
hi NonText guifg=#75715E | |
hi SpecialKey guifg=#75715E | |
else | |
hi Normal guifg=#F8F8F2 guibg=#1B1D1E | |
hi Comment guifg=#7E8E91 | |
hi CursorLine guibg=#293739 | |
hi CursorLineNr guifg=#FD971F gui=none | |
hi CursorColumn guibg=#293739 | |
hi ColorColumn guibg=#232526 | |
hi LineNr guifg=#465457 guibg=#232526 | |
hi NonText guifg=#465457 | |
hi SpecialKey guifg=#465457 | |
end | |
" | |
" Support for 256-color terminal | |
" | |
if &t_Co > 255 | |
if s:molokai_original == 1 | |
hi Normal ctermbg=234 | |
hi CursorLine ctermbg=235 cterm=none | |
hi CursorLineNr ctermfg=208 cterm=none | |
else | |
hi Normal ctermfg=252 ctermbg=233 | |
hi CursorLine ctermbg=234 cterm=none | |
hi CursorLineNr ctermfg=208 cterm=none | |
endif | |
hi Boolean ctermfg=135 | |
hi Character ctermfg=144 | |
hi Number ctermfg=135 | |
hi String ctermfg=144 | |
hi Conditional ctermfg=161 cterm=bold | |
hi Constant ctermfg=135 cterm=bold | |
hi Cursor ctermfg=16 ctermbg=253 | |
hi Debug ctermfg=225 cterm=bold | |
hi Define ctermfg=81 | |
hi Delimiter ctermfg=241 | |
hi DiffAdd ctermbg=24 | |
hi DiffChange ctermfg=181 ctermbg=239 | |
hi DiffDelete ctermfg=162 ctermbg=53 | |
hi DiffText ctermbg=102 cterm=bold | |
hi Directory ctermfg=118 cterm=bold | |
hi Error ctermfg=219 ctermbg=89 | |
hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold | |
hi Exception ctermfg=118 cterm=bold | |
hi Float ctermfg=135 | |
hi FoldColumn ctermfg=67 ctermbg=16 | |
hi Folded ctermfg=67 ctermbg=16 | |
hi Function ctermfg=118 | |
hi Identifier ctermfg=208 cterm=none | |
hi Ignore ctermfg=244 ctermbg=232 | |
hi IncSearch ctermfg=193 ctermbg=16 | |
hi keyword ctermfg=161 cterm=bold | |
hi Label ctermfg=229 cterm=none | |
hi Macro ctermfg=193 | |
hi SpecialKey ctermfg=81 | |
hi MatchParen ctermfg=233 ctermbg=208 cterm=bold | |
hi ModeMsg ctermfg=229 | |
hi MoreMsg ctermfg=229 | |
hi Operator ctermfg=161 | |
" complete menu | |
hi Pmenu ctermfg=81 ctermbg=16 | |
hi PmenuSel ctermfg=255 ctermbg=242 | |
hi PmenuSbar ctermbg=232 | |
hi PmenuThumb ctermfg=81 | |
hi PreCondit ctermfg=118 cterm=bold | |
hi PreProc ctermfg=118 | |
hi Question ctermfg=81 | |
hi Repeat ctermfg=161 cterm=bold | |
hi Search ctermfg=0 ctermbg=222 cterm=NONE | |
" marks column | |
hi SignColumn ctermfg=118 ctermbg=235 | |
hi SpecialChar ctermfg=161 cterm=bold | |
hi SpecialComment ctermfg=245 cterm=bold | |
hi Special ctermfg=81 | |
if has("spell") | |
hi SpellBad ctermbg=52 | |
hi SpellCap ctermbg=17 | |
hi SpellLocal ctermbg=17 | |
hi SpellRare ctermfg=none ctermbg=none cterm=reverse | |
endif | |
hi Statement ctermfg=161 cterm=bold | |
hi StatusLine ctermfg=238 ctermbg=253 | |
hi StatusLineNC ctermfg=244 ctermbg=232 | |
hi StorageClass ctermfg=208 | |
hi Structure ctermfg=81 | |
hi Tag ctermfg=161 | |
hi Title ctermfg=166 | |
hi Todo ctermfg=231 ctermbg=232 cterm=bold | |
hi Typedef ctermfg=81 | |
hi Type ctermfg=81 cterm=none | |
hi Underlined ctermfg=244 cterm=underline | |
hi VertSplit ctermfg=244 ctermbg=232 cterm=bold | |
hi VisualNOS ctermbg=238 | |
hi Visual ctermbg=235 | |
hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold | |
hi WildMenu ctermfg=81 ctermbg=16 | |
hi Comment ctermfg=59 | |
hi CursorColumn ctermbg=236 | |
hi ColorColumn ctermbg=236 | |
hi LineNr ctermfg=250 ctermbg=236 | |
hi NonText ctermfg=59 | |
hi SpecialKey ctermfg=59 | |
if exists("g:rehash256") && g:rehash256 == 1 | |
hi Normal ctermfg=252 ctermbg=234 | |
hi CursorLine ctermbg=236 cterm=none | |
hi CursorLineNr ctermfg=208 cterm=none | |
hi Boolean ctermfg=141 | |
hi Character ctermfg=222 | |
hi Number ctermfg=141 | |
hi String ctermfg=222 | |
hi Conditional ctermfg=197 cterm=bold | |
hi Constant ctermfg=141 cterm=bold | |
hi DiffDelete ctermfg=125 ctermbg=233 | |
hi Directory ctermfg=154 cterm=bold | |
hi Error ctermfg=222 ctermbg=233 | |
hi Exception ctermfg=154 cterm=bold | |
hi Float ctermfg=141 | |
hi Function ctermfg=154 | |
hi Identifier ctermfg=208 | |
hi Keyword ctermfg=197 cterm=bold | |
hi Operator ctermfg=197 | |
hi PreCondit ctermfg=154 cterm=bold | |
hi PreProc ctermfg=154 | |
hi Repeat ctermfg=197 cterm=bold | |
hi Statement ctermfg=197 cterm=bold | |
hi Tag ctermfg=197 | |
hi Title ctermfg=203 | |
hi Visual ctermbg=238 | |
hi Comment ctermfg=244 | |
hi LineNr ctermfg=239 ctermbg=235 | |
hi NonText ctermfg=239 | |
hi SpecialKey ctermfg=239 | |
endif | |
end | |
" Must be at the end, because of ctermbg=234 bug. | |
" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ | |
set background=dark | |
" End Molokai | |
set tabpagemax=15 | |
set showmode | |
set cursorline " Highlight the current line | |
if has('cmdline_info') | |
set ruler | |
set rulerformat=%30(%=\:b%n%y%m%r%w\ %l,%c%V\ %P%) " Steroids | |
set showcmd "Show partial commands | |
endif | |
if has('statusline') | |
set laststatus=2 | |
" Color groups | |
hi User1 ctermbg=234 ctermfg=161 | |
hi User2 ctermbg=234 ctermfg=118 | |
hi User3 ctermbg=234 ctermfg=81 | |
" Color status line | |
set statusline= " Start empty | |
set statusline+=%1* " Shift colors | |
set statusline+=%F " Full filename | |
set statusline+=%2* " Switch colors | |
set statusline+=\ %w%h%m%r " Display options | |
set statusline+=%1* " Switch background | |
set statusline+=\ [%{&ff}/%Y] " filetype | |
set statusline+=%3* " Switch colors | |
set statusline+=%=%-14.(%l,%c%V%)\ %p%% " Right aligned | |
endif | |
set backspace=indent,eol,start " Backspace for dummies | |
set linespace=0 " No extra spaces between rows | |
set number " Line numbers on | |
set showmatch " Show matching brackets/parenthesis | |
set incsearch " Find as you type search | |
set hlsearch " Highlight search terms | |
set winminheight=0 " Windows can be 0 line high | |
set ignorecase " Case insensitive search | |
set smartcase " Case sensitive when uc present | |
set wildmenu " Show list instead of just completing | |
set wildmode=list:longest,full " Command <Tab> completion, list matches, then longest common part, then all. | |
set whichwrap=b,s,h,l,<,>,[,] " Backspace and cursor keys wrap too | |
set scrolljump=5 " Lines to scroll when cursor leaves screen | |
set scrolloff=3 " Minimum lines to keep above and below cursor | |
set foldenable " Auto fold code | |
set list | |
set listchars=tab:›\ ,trail:•,extends:#,nbsp:. " Highlight problematic whitespace | |
" Formatting { | |
set nowrap " Do not wrap long lines | |
set autoindent " Indent at the same level of the previous line | |
set shiftwidth=4 " Use indents of 4 spaces | |
set expandtab " Tabs are spaces, not tabs | |
set tabstop=4 " An indentation every four columns | |
set softtabstop=4 " Let backspace delete indent | |
set nojoinspaces " Prevents inserting two spaces after punctuation on a join (J) | |
set splitright " Puts new vsplit windows to the right of the current | |
set splitbelow " Puts new split windows to the bottom of the current | |
"set matchpairs+=<:> " Match, to be used with % | |
set pastetoggle=<F12> " pastetoggle (sane indentation on pastes) | |
"set comments=sl:/*,mb:*,elx:*/ " auto format comment blocks | |
" Remove trailing whitespaces and ^M chars | |
" To disable the stripping of whitespace, add the following to your | |
" .vimrc.before.local file: | |
" let g:spf13_keep_trailing_whitespace = 1 | |
autocmd FileType c,cpp,java,go,php,javascript,puppet,python,rust,twig,xml,yml,perl,sql autocmd BufWritePre <buffer> if !exists('g:spf13_keep_trailing_whitespace') | call StripTrailingWhitespace() | endif | |
"autocmd FileType go autocmd BufWritePre <buffer> Fmt | |
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig | |
autocmd FileType haskell,puppet,ruby,yml setlocal expandtab shiftwidth=2 softtabstop=2 | |
" preceding line best in a plugin but here for now. | |
autocmd BufNewFile,BufRead *.coffee set filetype=coffee | |
" Workaround vim-commentary for Haskell | |
autocmd FileType haskell setlocal commentstring=--\ %s | |
" Workaround broken colour highlighting in Haskell | |
autocmd FileType haskell,rust setlocal nospell | |
" } | |
" Key (re)Mappings { | |
" The default leader is '\', but many people prefer ',' as it's in a standard | |
" location. | |
let mapleader = ',' | |
" Easier moving in tabs and windows | |
" The lines conflict with the default digraph mapping of <C-K> | |
" If you prefer that functionality, add the following to your | |
" .vimrc.before.local file: | |
" let g:spf13_no_easyWindows = 1 | |
if !exists('g:spf13_no_easyWindows') | |
map <C-J> <C-W>j<C-W>_ | |
map <C-K> <C-W>k<C-W>_ | |
map <C-L> <C-W>l<C-W>_ | |
map <C-H> <C-W>h<C-W>_ | |
endif | |
" Wrapped lines goes down/up to next row, rather than next line in file. | |
noremap j gj | |
noremap k gk | |
" End/Start of line motion keys act relative to row/wrap width in the | |
" presence of `:set wrap`, and relative to line for `:set nowrap`. | |
" Default vim behaviour is to act relative to text line in both cases | |
" If you prefer the default behaviour, add the following to your | |
" .vimrc.before.local file: | |
" let g:spf13_no_wrapRelMotion = 1 | |
if !exists('g:spf13_no_wrapRelMotion') | |
" Same for 0, home, end, etc | |
function! WrapRelativeMotion(key, ...) | |
let vis_sel="" | |
if a:0 | |
let vis_sel="gv" | |
endif | |
if &wrap | |
execute "normal!" vis_sel . "g" . a:key | |
else | |
execute "normal!" vis_sel . a:key | |
endif | |
endfunction | |
" Map g* keys in Normal, Operator-pending, and Visual+select | |
noremap $ :call WrapRelativeMotion("$")<CR> | |
noremap <End> :call WrapRelativeMotion("$")<CR> | |
noremap 0 :call WrapRelativeMotion("0")<CR> | |
noremap <Home> :call WrapRelativeMotion("0")<CR> | |
noremap ^ :call WrapRelativeMotion("^")<CR> | |
" Overwrite the operator pending $/<End> mappings from above | |
" to force inclusive motion with :execute normal! | |
onoremap $ v:call WrapRelativeMotion("$")<CR> | |
onoremap <End> v:call WrapRelativeMotion("$")<CR> | |
" Overwrite the Visual+select mode mappings from above | |
" to ensure the correct vis_sel flag is passed to function | |
vnoremap $ :<C-U>call WrapRelativeMotion("$", 1)<CR> | |
vnoremap <End> :<C-U>call WrapRelativeMotion("$", 1)<CR> | |
vnoremap 0 :<C-U>call WrapRelativeMotion("0", 1)<CR> | |
vnoremap <Home> :<C-U>call WrapRelativeMotion("0", 1)<CR> | |
vnoremap ^ :<C-U>call WrapRelativeMotion("^", 1)<CR> | |
endif | |
" The following two lines conflict with moving to top and | |
" bottom of the screen | |
" If you prefer that functionality, add the following to your | |
" .vimrc.before.local file: | |
" let g:spf13_no_fastTabs = 1 | |
if !exists('g:spf13_no_fastTabs') | |
map <S-H> gT | |
map <S-L> gt | |
endif | |
" Stupid shift key fixes | |
if !exists('g:spf13_no_keyfixes') | |
if has("user_commands") | |
command! -bang -nargs=* -complete=file E e<bang> <args> | |
command! -bang -nargs=* -complete=file W w<bang> <args> | |
command! -bang -nargs=* -complete=file Wq wq<bang> <args> | |
command! -bang -nargs=* -complete=file WQ wq<bang> <args> | |
command! -bang Wa wa<bang> | |
command! -bang WA wa<bang> | |
command! -bang Q q<bang> | |
command! -bang QA qa<bang> | |
command! -bang Qa qa<bang> | |
endif | |
cmap Tabe tabe | |
endif | |
" Yank from the cursor to the end of the line, to be consistent with C and D. | |
nnoremap Y y$ | |
" Code folding options | |
nmap <leader>f0 :set foldlevel=0<CR> | |
nmap <leader>f1 :set foldlevel=1<CR> | |
nmap <leader>f2 :set foldlevel=2<CR> | |
nmap <leader>f3 :set foldlevel=3<CR> | |
nmap <leader>f4 :set foldlevel=4<CR> | |
nmap <leader>f5 :set foldlevel=5<CR> | |
nmap <leader>f6 :set foldlevel=6<CR> | |
nmap <leader>f7 :set foldlevel=7<CR> | |
nmap <leader>f8 :set foldlevel=8<CR> | |
nmap <leader>f9 :set foldlevel=9<CR> | |
" Most prefer to toggle search highlighting rather than clear the current | |
" search results. To clear search highlighting rather than toggle it on | |
" and off, add the following to your .vimrc.before.local file: | |
" let g:spf13_clear_search_highlight = 1 | |
if exists('g:spf13_clear_search_highlight') | |
nmap <silent> <leader>/ :nohlsearch<CR> | |
else | |
nmap <silent> <leader>/ :set invhlsearch<CR> | |
endif | |
" Find merge conflict markers | |
map <leader>fc /\v^[<\|=>]{7}( .*\|$)<CR> | |
" Shortcuts | |
" Change Working Directory to that of the current file | |
cmap cwd lcd %:p:h | |
cmap cd. lcd %:p:h | |
" Visual shifting (does not exit Visual mode) | |
vnoremap < <gv | |
vnoremap > >gv | |
" Allow using the repeat operator with a visual selection (!) | |
" http://stackoverflow.com/a/8064607/127816 | |
vnoremap . :normal .<CR> | |
" For when you forget to sudo.. Really Write the file. | |
cmap w!! w !sudo tee % >/dev/null | |
" Some helpers to edit mode | |
" http://vimcasts.org/e/14 | |
cnoremap %% <C-R>=fnameescape(expand('%:h')).'/'<cr> | |
map <leader>ew :e %% | |
map <leader>es :sp %% | |
map <leader>ev :vsp %% | |
map <leader>et :tabe %% | |
" Adjust viewports to the same size | |
map <Leader>= <C-w>= | |
" Map <Leader>ff to display all lines with keyword under cursor | |
" and ask which one to jump to | |
nmap <Leader>ff [I:let nr = input("Which one: ")<Bar>exe "normal " . nr ."[\t"<CR> | |
" Easier horizontal scrolling | |
map zl zL | |
map zh zH | |
" Easier formatting | |
nnoremap <silent> <leader>q gwip | |
" FIXME: Revert this f70be548 | |
" fullscreen mode for GVIM and Terminal, need 'wmctrl' in you PATH | |
map <silent> <F11> :call system("wmctrl -ir " . v:windowid . " -b toggle,fullscreen")<CR> | |
" } | |
" Functions { | |
" Strip whitespace { | |
function! StripTrailingWhitespace() | |
" Preparation: save last search, and cursor position. | |
let _s=@/ | |
let l = line(".") | |
let c = col(".") | |
" do the business: | |
%s/\s\+$//e | |
" clean up: restore previous search history, and cursor position | |
let @/=_s | |
call cursor(l, c) | |
endfunction | |
" } | |
" Shell command { | |
function! s:RunShellCommand(cmdline) | |
botright new | |
setlocal buftype=nofile | |
setlocal bufhidden=delete | |
setlocal nobuflisted | |
setlocal noswapfile | |
setlocal nowrap | |
setlocal filetype=shell | |
setlocal syntax=shell | |
call setline(1, a:cmdline) | |
call setline(2, substitute(a:cmdline, '.', '=', 'g')) | |
execute 'silent $read !' . escape(a:cmdline, '%#') | |
setlocal nomodifiable | |
1 | |
endfunction | |
command! -complete=file -nargs=+ Shell call s:RunShellCommand(<q-args>) | |
" e.g. Grep current file for <search_term>: Shell grep -Hn <search_term> % | |
" } | |
" } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment