Created
March 10, 2017 19:44
-
-
Save travisbrady/5e0be94d163129942a65f65e317abf8e 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
set nocompatible | |
filetype off | |
let mapleader="," | |
let g:mapleader = "," | |
call plug#begin('~/.vim/plugged') | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'rgrinberg/vim-ocaml' | |
Plug 'rking/ag.vim' | |
Plug 'tpope/vim-fugitive' | |
Plug 'ctrlpvim/ctrlp.vim' | |
Plug 'derekwyatt/vim-scala' | |
Plug 'fatih/vim-go' | |
Plug 'kana/vim-operator-user' | |
Plug 'rhysd/vim-clang-format' | |
"Plug 't1mxg0d/vim-lucario' | |
"Plug 'altercation/vim-colors-solarized' | |
Plug 'encody/nvim' | |
Plug 'tyrannicaltoucan/vim-quantum' | |
Plug 'mhinz/vim-grepper' | |
Plug 'mhartington/oceanic-next' | |
" Add plugins to &runtimepath | |
call plug#end() | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline_powerline_fonts = 1 | |
set guifont=Droid\ Sans\ Mono\ for\ Powerline | |
"colo desert | |
" Python | |
syntax enable | |
" set tabs to have 4 spaces | |
set ts=4 | |
" indent when moving to the next line while writing code | |
set autoindent | |
set expandtab | |
" when using the >> or << commands, shift lines by 4 spaces | |
set shiftwidth=4 | |
" show a visual line under the cursor's current line | |
set cursorline | |
" show the matching part of the pair for [] {} and () | |
set showmatch | |
let python_highlight_all = 1 | |
:map <leader>n :bnext<cr> | |
noremap <Leader>s :update<CR> | |
nmap <leader>w :w!<cr> | |
set wildignore=*.o,*~,*.pyc | |
if has("win16") || has("win32") | |
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store | |
else | |
set wildignore+=.git\*,.hg\*,.svn\* | |
endif | |
set encoding=utf8 | |
set ffs=unix,dos,mac | |
set nobackup | |
set nowb | |
set noswapfile | |
set laststatus=2 | |
" Visual mode pressing * or # searches for the current selection | |
" Super useful! From an idea by Michael Naumann | |
vnoremap <silent> * :call VisualSelection('f', '')<CR> | |
vnoremap <silent> # :call VisualSelection('b', '')<CR> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Ag searching and cope displaying | |
" requires ag.vim - it's much better than vimgrep/grep | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" When you press gv you Ag after the selected text | |
vnoremap <silent> gv :call VisualSelection('gv', '')<CR> | |
" Open Ag and put the cursor in the right position | |
map <leader>g :Ag | |
" When you press <leader>r you can search and replace the selected text | |
vnoremap <silent> <leader>r :call VisualSelection('replace', '')<CR> | |
au FileType Makefile set noexpandtab | |
" ,p toggles paste mode | |
nmap <leader>p :set paste!<BAR>set paste?<CR> | |
" Do :help cope if you are unsure what cope is. It's super useful! | |
" | |
" When you search with Ag, display your results in cope by doing: | |
" <leader>cc | |
" | |
" To go to the next search result do: | |
" <leader>n | |
" | |
" To go to the previous search results do: | |
" <leader>p | |
" | |
"map <leader>cc :botright cope<cr> | |
"map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg | |
"map <leader>n :cn<cr> | |
"map <leader>p :cp<cr> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Helper functions | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
function! CmdLine(str) | |
exe "menu Foo.Bar :" . a:str | |
emenu Foo.Bar | |
unmenu Foo | |
endfunction | |
function! VisualSelection(direction, extra_filter) 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("Ag \"" . l:pattern . "\" " ) | |
elseif a:direction == 'replace' | |
call CmdLine("%s" . '/'. l:pattern . '/') | |
elseif a:direction == 'f' | |
execute "normal /" . l:pattern . "^M" | |
endif | |
let @/ = l:pattern | |
let @" = l:saved_reg | |
endfunction | |
" Returns true if paste mode is enabled | |
function! HasPaste() | |
if &paste | |
return 'PASTE MODE ' | |
endif | |
return '' | |
endfunction | |
" Don't close window, when deleting a buffer | |
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 | |
" Merlin | |
let g:opamshare = substitute(system('opam config var share'),'\n$','','''') | |
execute "set rtp+=" . g:opamshare . "/merlin/vim" | |
au BufNewFile,BufRead *.js,*.html,*.css : | |
\ set tabstop=2 | | |
\ set softtabstop=2 | | |
\ set shiftwidth=2 | | |
autocmd FileType c ClangFormatAutoEnable | |
" Theme | |
syntax enable | |
" for vim 7 | |
set t_Co=256 | |
" for vim 8 | |
if (has("termguicolors")) | |
set termguicolors | |
endif | |
colorscheme OceanicNext |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment