Created
March 2, 2017 17:47
-
-
Save cfcosta/8cdbf53258f927d939bf17f62fef92c7 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
" Indent configuration | |
autocmd FileType ruby set ts=2 sts=2 sw=2 re=1 | |
autocmd FileType yaml set ts=2 sts=2 sw=2 | |
autocmd FileType c,cpp set ts=2 sts=2 sw=2 | |
autocmd FileType css,html set ts=2 sts=2 sw=2 | |
"$HOME/.rbenv/bin: Disable folds to avoid slowness | |
set foldmethod=manual | |
" Automatically expand tabs into spaces | |
set expandtab | |
" Keep our buffers open, even if we are not seeing them. | |
set hidden | |
set switchbuf=useopen | |
" Disable wrap | |
set nowrap | |
" Disable visual bell | |
set visualbell t_vb= | |
" Line numbers | |
set number | |
" Configure our completion mode | |
set wildmode=longest:full,full | |
" Enable true colors | |
set termguicolors | |
" Enable in-place search and replace | |
set inccommand=split | |
call plug#begin('~/.config/nvim/plugged') | |
" Colorscheme | |
Plug 'chriskempson/base16-vim' | |
" Ruby | |
Plug 'vim-ruby/vim-ruby', {'for': 'ruby'} | |
Plug 'keith/rspec.vim', {'for': 'ruby'} | |
Plug 'tpope/vim-rails', {'for': 'ruby'} | |
" Elixir | |
Plug 'elixir-lang/vim-elixir' | |
" C/C++ | |
Plug 'arakashic/chromatica.nvim' " Clang color | |
Plug 'justmao945/vim-clang', {'for': ['c', 'cpp']} | |
" Rust | |
Plug 'rust-lang/rust.vim' | |
" Other Languages | |
Plug 'ElmCast/elm-vim' | |
Plug 'chrisbra/csv.vim', {'for': 'csv'} | |
Plug 'mustache/vim-mustache-handlebars' | |
Plug 'cespare/vim-toml' | |
Plug 'PotatoesMaster/i3-vim-syntax' | |
Plug 'tpope/vim-haml' | |
" Text handling plugins | |
Plug 'tpope/vim-surround' | |
Plug 'scrooloose/nerdcommenter' | |
Plug 'bronson/vim-trailing-whitespace' | |
" Input plugins | |
Plug 'Raimondi/delimitMate' | |
Plug 'houtsnip/vim-emacscommandline' | |
Plug 'tpope/vim-endwise' | |
Plug 'lilydjwg/colorizer' | |
Plug 'tpope/vim-ragtag' | |
" Snippets | |
Plug 'Shougo/neosnippet.vim' | |
Plug 'cfcosta/neosnippet-snippets' | |
" Text Objects | |
Plug 'kana/vim-textobj-user' | |
Plug 'tek/vim-textobj-ruby', {'for': 'ruby'} | |
" Autocomplete | |
Plug 'Shougo/deoplete.nvim' | |
Plug 'zchee/deoplete-clang' " C/C++ | |
Plug 'Shougo/neco-vim' " VimL | |
Plug 'Shougo/neco-syntax' " Vim Syntax Groups | |
Plug 'slashmili/alchemist.vim' " Elixir | |
Plug 'carlitux/deoplete-ternjs' " Javascript | |
let g:deoplete#enable_at_startup = 1 | |
" Language Server Support | |
Plug 'autozimu/LanguageClient-neovim' " Rust | |
let g:LanguageClient_serverCommands = { | |
\ 'rust': ['cargo', 'run', '--release', '--manifest-path=/opt/rls/Cargo.toml'], | |
\ } | |
" Clang configuration | |
let g:chromatica#enable_at_startup = 0 | |
let g:deoplete#sources#clang#std#c = 'c11' | |
let g:deoplete#sources#clang#std#cpp = 'c++1z' | |
let g:clang_compilation_database = '.' | |
let g:clang_c_options = '-std=gnu11' " Force C11 support for vim-clang | |
let g:clang_cpp_options = '-std=c++11 ' " Force C++11 support for vim-clang | |
" Powerline | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
let g:airline_powerline_fonts = 1 | |
" Environment plugins | |
Plug 'tpope/vim-vinegar' | |
Plug 'DataWraith/auto_mkdir' | |
Plug 'gabesoft/vim-ags' | |
Plug 'jlanzarotta/bufexplorer' | |
Plug 'tpope/vim-fugitive' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'vim-scripts/a.vim' | |
Plug 'neomake/neomake' | |
autocmd! BufWritePost * Neomake | |
" Services | |
Plug 'wakatime/vim-wakatime' | |
" FZF | |
Plug 'junegunn/fzf', { 'do': 'yes n \| ./install' } | |
let g:fzf_action = { 'ctrl-s': 'split', 'ctrl-v': 'vsplit' } | |
Plug 'kassio/neoterm' | |
let g:neoterm_position = "horizontal" | |
Plug 'janko-m/vim-test' | |
let test#strategy = "neoterm" | |
Plug 'sbdchd/neoformat' | |
let g:neoformat_enabled_javascript = ['js-beautify'] | |
call plug#end() | |
" Set python paths for faster lookup | |
let g:python_host_prog = "/usr/bin/python2" | |
let g:python2_host_prog = "/usr/bin/python2" | |
let g:python3_host_prog = "/usr/bin/python3" | |
" Root Paths | |
let g:clang_root = '/usr/local/opt/llvm' | |
let g:src_path = $HOME . '/Projects/_src' | |
let g:chromatica#libclang_path = g:clang_root . '/lib' | |
let g:deoplete#sources#clang#libclang_path = g:clang_root . '/lib/libclang.dylib' | |
let g:deoplete#sources#clang#clang_header = g:clang_root . '/include' | |
let $RUST_SRC_PATH = g:src_path | |
let g:racer_cmd = g:src_path . '/Projects/racer/target/release/racer' | |
let g:alchemist#elixir_erlang_src = g:src_path | |
" Plugin configuration | |
" ============================================================================= | |
" Here we add all configuration for our plugins that need them to be | |
" enabled before they can be called. | |
" ============================================================================= | |
" Set our terminal background to dark | |
set background=dark | |
if isdirectory($HOME . "/.config/nvim/autoload") | |
" Set our colorscheme | |
colorscheme base16-ashes | |
" Colorize our terminal as well :D | |
let g:terminal_color_0="#1C2023" | |
let g:terminal_color_1="#C7AE95" | |
let g:terminal_color_2="#95C7AE" | |
let g:terminal_color_3="#AEC795" | |
let g:terminal_color_4="#AE95C7" | |
let g:terminal_color_5="#C795AE" | |
let g:terminal_color_6="#95AEC7" | |
let g:terminal_color_7="#C7CCD1" | |
let g:terminal_color_8="#747C84" | |
let g:terminal_color_9="#C7AE95" | |
let g:terminal_color_10="#95C7AE" | |
let g:terminal_color_11="#AEC795" | |
let g:terminal_color_12="#AE95C7" | |
let g:terminal_color_13="#C795AE" | |
let g:terminal_color_14="#95AEC7" | |
let g:terminal_color_15="#F3F4F5" | |
let g:terminal_color_background="#1C2023" | |
let g:terminal_color_foreground="#C7CCD1" | |
endif | |
" Keymaps | |
" ============================================================================= | |
" Usually we're going to follow some conventions: | |
" - If a command opens a new pane/buffer, we're going to give it a PRIMARY, | |
" and that PRIMARY can be repeated or added a MODIFIER. | |
" | |
" Our MODIFIERS are always the same: | |
" * `s` for opening in a vertical split | |
" * `S` for opening in a horizontal split | |
" * `t` for opening in a new tab | |
" | |
" Our PRIMARIES are defined in a command by command basis. | |
" ============================================================================= | |
" Map our leader key to `,` | |
let g:mapleader="," | |
" Clean up search results | |
nnoremap <c-l> :nohlsearch<cr> | |
" Map window movement commands to terminal buffers | |
tnoremap <c-w>j <c-\><c-n><c-w>j | |
tnoremap <c-w>k <c-\><c-n><c-w>k | |
tnoremap <c-w>h <c-\><c-n><c-w>h | |
tnoremap <c-w>l <c-\><c-n><c-w>l | |
tnoremap <c-w>J <c-\><c-n><c-w>J | |
tnoremap <c-w>K <c-\><c-n><c-w>K | |
tnoremap <c-w>H <c-\><c-n><c-w>H | |
tnoremap <c-w>L <c-\><c-n><c-w>L | |
tnoremap <c-w>x <c-\><c-n><c-w>x | |
" Format the .c/.h file | |
nnoremap <silent> <leader>ff :Neoformat<cr>:e<cr> | |
" Remove trailing whitespaces | |
nnoremap <silent> <leader><space> :FixWhitespace<cr> | |
" a.vim | |
nnoremap <silent> <leader>aa :A<cr> | |
nnoremap <silent> <leader>as :AV<cr> | |
nnoremap <silent> <leader>aS :AS<cr> | |
" vim-test | |
nmap <silent> <leader>ss :TestLast<CR> | |
nmap <silent> <leader>sf :TestFile<CR> | |
nmap <silent> <leader>sr :TestSuite<CR> | |
" fzf.vim - fuzzy file finder | |
nnoremap <silent> <leader>tt :FZF<cr> | |
" bufexplorer.vim - buffer handling | |
nnoremap <silent> <leader>bb :BufExplorer<cr> | |
nnoremap <silent> <leader>bs :BufExplorerVerticalSplit<cr> | |
nnoremap <silent> <leader>bS :BufExplorerHorizontalSplit<cr> | |
" IDE-like hotkeys (base z) | |
" Go To Definition | |
nnoremap <silent> <leader>zd call LanguageClient_textDocument_definition()<cr> | |
" Hover (Show Type) | |
nnoremap <silent> K :call LanguageClient_textDocument_hover()<CR> | |
" Rename | |
nnoremap <silent> <leader>zr call LanguageClient_textDocument_rename()<cr> | |
" List Symbols | |
nnoremap <silent> <leader>zz call LanguageClient_workspace_symbol()<cr> | |
" Neosnippet | |
imap <expr><TAB> neosnippet#expandable_or_jumpable() ? | |
\ "\<Plug>(neosnippet_expand_or_jump)" | |
\: pumvisible() ? "\<C-n>" : "\<TAB>" | |
smap <expr><TAB> neosnippet#expandable_or_jumpable() ? | |
\ "\<Plug>(neosnippet_expand_or_jump)" | |
\: "\<TAB>" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment