diff --git a/vim/.vim/colors/molokai.vim b/vim/.vim/colors/molokai.vim new file mode 100644 index 0000000..6d97053 --- /dev/null +++ b/vim/.vim/colors/molokai.vim @@ -0,0 +1,276 @@ +" Vim color file +" +" Author: Tomas Restrepo +" 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 diff --git a/vim/.vimrc b/vim/.vimrc new file mode 100644 index 0000000..bac428b --- /dev/null +++ b/vim/.vimrc @@ -0,0 +1,286 @@ +set background=dark +set t_RB= +colorscheme molokai + + +if &compatible + set nocompatible +endif + +" --------------------------------------------------------------------------- +" Leader key +" --------------------------------------------------------------------------- +let mapleader = " " +let maplocalleader = " " +nnoremap +set timeoutlen=500 + +" --------------------------------------------------------------------------- +" Sensible interface defaults +" --------------------------------------------------------------------------- +syntax enable +filetype plugin indent on + +set number +set cursorline +set ruler +set showcmd +set showmode +set laststatus=2 +set showtabline=2 +set wildmenu +set wildmode=longest:full,full +set scrolloff=4 +set sidescrolloff=4 +set splitbelow +set splitright +set hidden +set confirm +set mouse=a + +" Search as you type; keep searches case-sensitive only when capitals are used. +set incsearch +set hlsearch +set ignorecase +set smartcase + +" Comfortable editing defaults. +set backspace=indent,eol,start +set autoindent +set smartindent +set expandtab +set tabstop=2 +set shiftwidth=2 +set softtabstop=2 + +" Python convention: four-space indentation. +augroup simple_indentation + autocmd! + autocmd FileType python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 +augroup END + +" Use the desktop clipboard when this Vim build supports it. +if has('clipboard') + set clipboard=unnamedplus +endif + +" --------------------------------------------------------------------------- +" Built-in file browser (netrw): tree-style sidebar, no plugin required +" --------------------------------------------------------------------------- +let g:netrw_banner = 0 +let g:netrw_liststyle = 3 +let g:netrw_winsize = 25 +let g:netrw_keepdir = 1 +let g:netrw_altv = 1 + +" Space-e: toggle the file browser on the left. +nnoremap e :Lexplore + +" Useful keys while the file browser is focused: +" Enter open file or directory +" t open file in a new tab +" - go to the parent directory +" R rename selected file +" D delete selected file +" % create a new file +" d create a new directory + +" --------------------------------------------------------------------------- +" Tabs +" --------------------------------------------------------------------------- +nnoremap gt +nnoremap gT +nnoremap t :tabnew +nnoremap c :tabclose + +" Move the current tab left or right. +nnoremap [ :tabmove -1 +nnoremap ] :tabmove +1 + +" --------------------------------------------------------------------------- +" Everyday shortcuts (each is Leader plus one key) +" --------------------------------------------------------------------------- +nnoremap s :write +nnoremap q :quit +nnoremap x :write:quit +nnoremap / :nohlsearch + +" Move between split windows. +nnoremap h h +nnoremap j j +nnoremap k k +nnoremap l l + +" --------------------------------------------------------------------------- +" Project navigation +" --------------------------------------------------------------------------- + +" Search recursively from Vim's current directory. +set path+=** + +" Ignore generated and dependency directories. +set wildignore+=*/.git/* +set wildignore+=*/node_modules/* +set wildignore+=*/dist/* +set wildignore+=*/build/* +set wildignore+=*/coverage/* + +" Space-f: type part of a filename and press Tab. +nnoremap f :find + +" Space-o: show previously opened files. +nnoremap o :browse oldfiles + +" Space-b: list buffers, then type the buffer number and press Enter. +nnoremap b :buffers:buffer + + + + + +function! ProjectSearch() + let l:query = input('Search project: ') + + if empty(l:query) + return + endif + + execute 'silent vimgrep /\V' + \ . escape(l:query, '/\') + \ . '/gj **/*' + + copen +endfunction + +nnoremap g :call ProjectSearch() +nnoremap n :cnext +nnoremap p :cprevious + + +function! ReindentFile() + let l:view = winsaveview() + normal! gg=G + call winrestview(l:view) +endfunction + +nnoremap i :call ReindentFile() +xnoremap i =gv + + +" Save all modified files. +nnoremap a :wall + +" Splits. +nnoremap v :vsplit +nnoremap - :split +nnoremap = = + +" Reload the configuration after editing ~/.vimrc. +nnoremap r :source $MYVIMRC + +" Quickly leave Insert mode. +inoremap jk + +" --------------------------------------------------------------------------- +" Keymap help screen +" --------------------------------------------------------------------------- + +function! ShowKeymapHelp() + " Open the help in a temporary buffer. + enew + silent file Vim-Keymaps + + setlocal buftype=nofile + setlocal bufhidden=wipe + setlocal noswapfile + setlocal nobuflisted + setlocal nomodified + setlocal nowrap + setlocal nonumber + setlocal norelativenumber + setlocal nocursorline + + call setline(1, [ + \ 'VIM KEYMAPS', + \ '===========', + \ '', + \ 'Leader key: Space', + \ '', + \ 'FILES AND BROWSING', + \ ' Space e Toggle file browser', + \ ' Space f Find project file', + \ ' Space o Recently opened files', + \ ' Space b List open buffers', + \ '', + \ 'Inside the file browser:', + \ ' Enter Open file or directory', + \ ' t Open file in new tab', + \ ' - Parent directory', + \ ' % Create file', + \ ' d Create directory', + \ ' R Rename file', + \ ' D Delete file', + \ '', + \ 'TABS', + \ ' Tab Next tab', + \ ' Shift-Tab Previous tab', + \ ' Space t Create new tab', + \ ' Space c Close current tab', + \ ' Space [ Move tab left', + \ ' Space ] Move tab right', + \ '', + \ 'SEARCH', + \ ' Space g Search text in project', + \ ' Space n Next search result', + \ ' Space p Previous search result', + \ ' Space / Clear search highlighting', + \ '', + \ 'EDITING', + \ ' Space s Save current file', + \ ' Space a Save all files', + \ ' Space i Auto-indent entire file', + \ ' jk Leave Insert mode', + \ '', + \ 'WINDOWS', + \ ' Space v Vertical split', + \ ' Space - Horizontal split', + \ ' Space = Equalize split sizes', + \ ' Space h Move to left window', + \ ' Space j Move to lower window', + \ ' Space k Move to upper window', + \ ' Space l Move to right window', + \ '', + \ 'VIM', + \ ' Space q Quit', + \ ' Space x Save and quit', + \ ' Space r Reload .vimrc', + \ ' Space ? Show this screen', + \ '', + \ 'Press q or Esc to close this screen.', + \ 'Press Space e to open the file browser.', + \ ]) + + setlocal nomodifiable + normal! gg + + " These mappings work only inside this help screen. + nnoremap q :bdelete! + nnoremap :bdelete! +endfunction + +" Show the help screen manually. +nnoremap ? :call ShowKeymapHelp() + +" Detect whether Vim is receiving piped input. +let g:vim_reading_stdin = 0 + +augroup keymap_help_startup + autocmd! + autocmd StdinReadPre * let g:vim_reading_stdin = 1 + + " Show the help only when Vim starts without a filename. + autocmd VimEnter * + \ if argc() == 0 && !g:vim_reading_stdin | + \ call ShowKeymapHelp() | + \ endif +augroup END