Initial commit
This commit is contained in:
@@ -0,0 +1,408 @@
|
||||
" Setup runtime path
|
||||
let s:editor_root=expand("~/.vim")
|
||||
let &rtp = &rtp . ',' . s:editor_root . '/bundle/Vundle.vim'
|
||||
|
||||
" Install Vundle if not present
|
||||
let vundle_installed=1
|
||||
let vundle_readme=s:editor_root . '/bundle/Vundle.vim/README.md'
|
||||
let vundle_repo = 'https://github.com/VundleVim/Vundle.vim'
|
||||
|
||||
if !filereadable(vundle_readme)
|
||||
echo "Installing Vundle.."
|
||||
echo ""
|
||||
silent call mkdir(s:editor_root . '/bundle', "p")
|
||||
silent execute "!git clone " . vundle_repo . " " . s:editor_root . "/bundle/Vundle.vim"
|
||||
let vundle_installed=0
|
||||
endif
|
||||
|
||||
call vundle#rc(s:editor_root . '/bundle')
|
||||
call vundle#begin()
|
||||
|
||||
Plugin 'VundleVim/Vundle.vim'
|
||||
Plugin 'airblade/vim-gitgutter'
|
||||
Plugin 'vim-airline/vim-airline-themes'
|
||||
Plugin 'jeffkreeftmeijer/vim-numbertoggle'
|
||||
Plugin 'majutsushi/tagbar'
|
||||
Plugin 'blueyed/vim-diminactive'
|
||||
Plugin 'tell-k/vim-autopep8'
|
||||
Plugin 'mhinz/vim-signify'
|
||||
|
||||
|
||||
" Syntax plugins
|
||||
"Plugin 'tmhedberg/SimpylFold'
|
||||
Plugin 'trapd00r/irc.vim'
|
||||
Plugin 'PotatoesMaster/i3-vim-syntax'
|
||||
Plugin 'ClockworkNet/vim-junos-syntax'
|
||||
Plugin 'nathanalderson/yang.vim'
|
||||
Plugin 'mitsuhiko/vim-jinja'
|
||||
Plugin 'sheerun/vim-polyglot'
|
||||
Plugin 'ekalinin/Dockerfile.vim'
|
||||
"Plugin 'fatih/vim-go'
|
||||
Plugin 'rust-lang/rust.vim'
|
||||
Plugin 'hhvm/vim-hack'
|
||||
|
||||
" Color schemes
|
||||
Plugin 'chriskempson/base16-vim'
|
||||
Plugin 'tomasr/molokai'
|
||||
Plugin 'joshdick/onedark.vim'
|
||||
Plugin 'arakashic/nvim-colors-solarized'
|
||||
Plugin 'drewtempelmeyer/palenight.vim'
|
||||
Plugin 'skbolton/embark'
|
||||
|
||||
Plugin 'guns/xterm-color-table.vim'
|
||||
|
||||
" Airline
|
||||
" Plugin 'joshdick/airline-onedark.vim'
|
||||
Plugin 'vim-airline/vim-airline'
|
||||
Plugin 'bling/vim-bufferline'
|
||||
|
||||
" Utility plugins
|
||||
Plugin 'benmills/vimux'
|
||||
"Plugin 'neomake/neomake'
|
||||
" Plugin 'coxley/codepad'
|
||||
Plugin 'keith/gist.vim'
|
||||
Plugin 'nvie/vim-flake8'
|
||||
" Plugin 'ntpeters/vim-better-whitespace'
|
||||
Plugin 'suan/vim-instant-markdown'
|
||||
Plugin 'dhruvasagar/vim-table-mode'
|
||||
Plugin 'powerline/powerline'
|
||||
" Plugin 'kana/vim-fakeclip'
|
||||
Plugin 'petermblair/vim-arcanist'
|
||||
Plugin 'phleet/vim-mercenary'
|
||||
Plugin 'hynek/vim-python-pep8-indent'
|
||||
Plugin 'tpope/vim-abolish'
|
||||
Plugin 'junegunn/fzf.vim'
|
||||
Plugin 'christoomey/vim-tmux-navigator'
|
||||
Plugin 'flazz/vim-colorschemes'
|
||||
Plugin 'jbgutierrez/vim-better-comments'
|
||||
" Ranger integration
|
||||
"Plugin 'francoiscabrol/ranger.vim'
|
||||
"Plugin 'w0rp/ale'
|
||||
" Powerhouse plugins
|
||||
Plugin 'Rykka/riv.vim'
|
||||
" Plugin 'Rykka/InstantRst'
|
||||
" Plugin 'sjl/gundo.vim'
|
||||
" Plugin 'tomtom/tcomment_vim'
|
||||
Plugin 'scrooloose/nerdtree'
|
||||
Plugin 'godlygeek/tabular'
|
||||
Plugin 'Shougo/deoplete.nvim'
|
||||
Plugin 'zchee/deoplete-clang'
|
||||
" Vim go completion
|
||||
Plugin 'nsf/gocode', {'rtp': 'vim/'}
|
||||
"Plugin 'davidhalter/jedi-vim'
|
||||
"Plugin 'deoplete-plugins/deoplete-jedi'
|
||||
" Plugin 'SirVer/ultisnips'
|
||||
" Plugin 'honza/vim-snippets'
|
||||
Plugin 'ervandew/supertab'
|
||||
" Plugin 'Yggdroot/indentLine'
|
||||
" Plugin 'terryma/vim-expand-region'
|
||||
|
||||
" Distraction free
|
||||
" Plugin 'junegunn/goyo.vim'
|
||||
" Plugin 'junegunn/limelight.vim'
|
||||
|
||||
" C++
|
||||
Plugin 'vim-scripts/a.vim'
|
||||
|
||||
" Web Development
|
||||
" Plugin 'mattn/emmet-vim'
|
||||
Plugin 'chrisbra/Colorizer'
|
||||
Plugin 'jelera/vim-javascript-syntax'
|
||||
|
||||
call vundle#end()
|
||||
|
||||
let g:python3_host_prog = '/usr/bin/python3'
|
||||
|
||||
"let g:onedark_termcolors=256
|
||||
|
||||
let g:deoplete#enable_at_startup = 1
|
||||
"let g:deoplete#sources = ['buffer', 'tag']
|
||||
|
||||
let g:deoplete#sources#clang#libclang_path = '/usr/lib/libclang.so'
|
||||
let g:deoplete#sources#clang#clang_header = '/usr/lib/clang'
|
||||
|
||||
autocmd FileType python nnoremap <leader>y :0,$!yapf<Cr>
|
||||
autocmd CompleteDone * pclose " To close preview window of deoplete
|
||||
|
||||
syntax enable
|
||||
set background=dark
|
||||
set termguicolors
|
||||
|
||||
if !exists('g:colors_name') || g:colors_name != 'base16-flat'
|
||||
colorscheme base16-flat
|
||||
endif
|
||||
|
||||
" Italics for my favorite color scheme
|
||||
let g:palenight_terminal_italics=1
|
||||
|
||||
" " be kind to the 80 character limit
|
||||
" " Create a giant wall of highlight past 80 characters
|
||||
"let &colorcolumn=join(range(81,999),",")
|
||||
highlight colorcolumn ctermbg=235 guibg=#2c2d27
|
||||
|
||||
" Toggle search hilighting with f3
|
||||
nnoremap <F3> :set hlsearch!<CR>
|
||||
" Don't hilight searches
|
||||
set nohlsearch
|
||||
|
||||
" Remap the leader key
|
||||
" let mapleader = "\<Space>"
|
||||
"let mapleader = "\\"
|
||||
|
||||
" remap ; to : so that ;w works instead of :w
|
||||
nnoremap ; :
|
||||
|
||||
" remap <ESC> key as jj
|
||||
"inoremap jj <ESC>
|
||||
" Same for jj
|
||||
inoremap jk <ESC>
|
||||
inoremap kj <ESC>
|
||||
|
||||
" quickly clear highlights
|
||||
map <leader>n :noh<CR>
|
||||
|
||||
" quickly close quickfix
|
||||
map <leader>C :ccl<CR><CR>
|
||||
|
||||
" quickly open a new tab
|
||||
map <leader>T :tabnew<CR>
|
||||
|
||||
" no more pesky escape (for insert and visual mode)
|
||||
imap kj <Esc>
|
||||
imap kJ <Esc>
|
||||
imap Kj <Esc>
|
||||
imap KJ <Esc>
|
||||
|
||||
" vv to generate a new vertical split
|
||||
nnoremap <silent> vv <C-w>v
|
||||
|
||||
" Navigate buffers
|
||||
" Tab navigation like Firefox.
|
||||
nnoremap <leader><tab> :bnext<CR>
|
||||
|
||||
" Find all occurances under cursor within file
|
||||
nnoremap ff g#<CR>
|
||||
|
||||
" map leader rv to resize window to 80 columns
|
||||
nnoremap <leader>rr :vertical resize 86<CR>
|
||||
|
||||
" Manage tabs with jk
|
||||
nnoremap <leader>j :tabp<CR>
|
||||
nnoremap <leader>k :tabn<CR>
|
||||
|
||||
" Buffer navigation like Firefox.
|
||||
nnoremap <C-S-tab> :bprev<CR>
|
||||
nnoremap <C-tab> :bnext<CR>
|
||||
|
||||
" manage the buffers
|
||||
nnoremap <leader>[ :bprev<CR>
|
||||
nnoremap <leader>] :bnext<CR>:w
|
||||
|
||||
"set list
|
||||
set hidden
|
||||
set ai
|
||||
set magic
|
||||
set mouse=a
|
||||
set number
|
||||
set ignorecase
|
||||
set smartcase
|
||||
set hlsearch
|
||||
set incsearch
|
||||
set pastetoggle=<F2>
|
||||
set cursorline " hilight the current line
|
||||
set splitright
|
||||
"set splitbelow
|
||||
set tags=~/mytags
|
||||
|
||||
:au FocusLost * :set number
|
||||
:au FocusGained * :set relativenumber
|
||||
|
||||
" Make splits nicer
|
||||
nnoremap <C-J> <C-W><C-J>
|
||||
nnoremap <C-K> <C-W><C-K>
|
||||
nnoremap <C-L> <C-W><C-L>
|
||||
nnoremap <C-H> <C-W><C-H>
|
||||
|
||||
" Show just the filename
|
||||
let g:airline#extensions#tabline#fnamemod = ':t'
|
||||
|
||||
" used patched fonts for airline arrows/triangles
|
||||
let g:airline_powerline_fonts=1
|
||||
|
||||
let g:airline#extensions#tabline#enabled = 1
|
||||
let g:airline#extensions#tabline#show_buffers = 0
|
||||
let g:airline#extensions#tabline#show_close_button = 0
|
||||
|
||||
" Ensure that for Makefiles we don't replace TABs with spaces
|
||||
let _curfile = expand("%:t")
|
||||
if _curfile =~ "Makefile" || _curfile =~ "makefile" || _curfile =~ ".*\mk"
|
||||
set noexpandtab
|
||||
else
|
||||
" Don't use tabs, use spaces
|
||||
set expandtab
|
||||
|
||||
" make tab insert indents instead of tabs at begining of line
|
||||
set smarttab
|
||||
endif
|
||||
|
||||
" Tell vim to treat certain files with python syntax
|
||||
au BufRead,BufNewFile *.cconf set filetype=python
|
||||
au BufRead,BufNewFile *.cinc set filetype=python
|
||||
au BufRead,BufNewFile *.thrift set filetype=thrift
|
||||
au BufRead,BufNewFile TARGETS set filetype=python
|
||||
au! Syntax thrift source $LOCAL_ADMIN_SCRIPTS/vim/syntax/thrift.vim
|
||||
|
||||
" NERDTree - map Ctrl+n to toggle the tree on/off
|
||||
nnoremap <F2> :NERDTreeToggle<CR>
|
||||
nnoremap <F8> :autopep8<CR>
|
||||
nnoremap <F5> :TagbarToggle<CR>
|
||||
|
||||
" Configures ripgrep with fzf
|
||||
command! -bang -nargs=* FzfRg call fzf#vim#grep("rg --column --line-number --no-heading --color=always --smart-case ".shellescape(<q-args>), 1, {'options': '--delimiter : --nth 4..'}, <bang>0)
|
||||
command! -bang -nargs=* Rgg call fzf#vim#grep("rg --no-ignore --column --line-number --no-heading --color=always --smart-case ".shellescape(<q-args>), 1, {'options': '--delimiter : --nth 4..'}, <bang>0)
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" https://github.com/christoomey/vim-tmux-navigator
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
source ~/.vim/bundle/vim-tmux-navigator/plugin/tmux_navigator.vim
|
||||
|
||||
|
||||
let g:tmux_navigator_no_mappings = 1
|
||||
|
||||
nnoremap <silent> {Left-mapping} :TmuxNavigateLeft<cr>
|
||||
nnoremap <silent> {Down-Mapping} :TmuxNavigateDown<cr>
|
||||
nnoremap <silent> {Up-Mapping} :TmuxNavigateUp<cr>
|
||||
nnoremap <silent> {Right-Mapping} :TmuxNavigateRight<cr>
|
||||
nnoremap <silent> {Previous-Mapping} :TmuxNavigatePrevious<cr>
|
||||
|
||||
"#############################################################################
|
||||
" Mappings
|
||||
"#############################################################################
|
||||
|
||||
" Next buffer
|
||||
nnoremap <silent> <tab> :bnext<CR>
|
||||
" Previous buffer
|
||||
nnoremap <silent> <s-tab> :bprevious<CR>
|
||||
" Create vsplit
|
||||
nnoremap <silent> <Leader>\| :vsp<CR>
|
||||
" Creat hsplit
|
||||
nnoremap <silent> <Leader>- :sp<CR>
|
||||
" Save file
|
||||
nnoremap <silent> <Leader>w :w<CR>
|
||||
" Open startify with leader l
|
||||
nnoremap <silent> <Leader>l :Startify<CR>
|
||||
" Open fuzzy files with leader \
|
||||
nnoremap <silent> <Leader>\ :Files<CR>
|
||||
" Open fuzzy lines with leader o
|
||||
nnoremap <silent> <Leader>o :Lines<CR>
|
||||
" Open fuzzy buffers with leader b
|
||||
nnoremap <silent> <Leader>b :Buffers<CR>
|
||||
" Open grep
|
||||
nnoremap <silent> <Leader>g :FzfRg<CR>
|
||||
" Open grep for cursor word
|
||||
nnoremap <silent> <Leader>c :FzfRg <C-R><C-W><CR>
|
||||
" Close the current buffer
|
||||
nnoremap <silent> <Leader>x :bd<CR>
|
||||
" Close all buffers
|
||||
nnoremap <silent> <Leader>z :%bd<CR>
|
||||
" Alternate file navigation
|
||||
nnoremap <silent> <Leader>a :A<CR>
|
||||
" Alternate file navigation vertical split
|
||||
nnoremap <silent> <Leader>v :AV<CR>
|
||||
" Cycle line number modes
|
||||
nnoremap <silent> <Leader>r :call CycleNumbering()<CR>
|
||||
" Open project
|
||||
nnoremap <silent> <Leader>m :call ToggleProject()<CR>
|
||||
" Open scratch term
|
||||
nnoremap <silent> <Leader>s :call ToggleScratchTerm()<CR>
|
||||
" Open lazygit
|
||||
nnoremap <silent> <Leader>' :call ToggleLazyGit()<CR>
|
||||
" Open vifm
|
||||
nnoremap <silent> <Leader>/ :Vifm<CR>
|
||||
" Get outline
|
||||
nnoremap <silent> <Leader>co :<C-u>CocList outline<CR>
|
||||
" Get symbols
|
||||
nnoremap <silent> <Leader>cs :<C-u>CocList -I symbols<CR>
|
||||
" Get errors
|
||||
nnoremap <silent> <Leader>cl :<C-u>CocList locationlist<CR>
|
||||
" Get available commands
|
||||
nnoremap <silent> <Leader>cc :<C-u>CocList commands<CR>
|
||||
" Restart server
|
||||
nnoremap <silent> <Leader>cR :<C-u>CocRestart<CR>
|
||||
" Quit term buffer with ESC
|
||||
tnoremap <silent> <Esc> <C-\><C-n><CR>
|
||||
" Go to definition
|
||||
nnoremap <silent> gd <Plug>(coc-definition)
|
||||
" Go to type definition
|
||||
nnoremap <silent> gy <Plug>(coc-type-definition)
|
||||
" Go to implementation
|
||||
nnoremap <silent> gi <Plug>(coc-implementation)
|
||||
" Find references
|
||||
nnoremap <silent> gr <Plug>(coc-references)
|
||||
" Get hint
|
||||
nnoremap <silent> gh :call CocActionAsync('doHover')<CR>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" vim-autopep8
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
"let g:autopep8_disable_show_diff=1
|
||||
nnoremap <F8> :autopep8<CR>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" airline
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
let g:airline_powerline_fonts = 1
|
||||
let g:airline_theme = 'tomorrow'
|
||||
|
||||
" There needs to be a "fbgrep" command present in the home directory for this
|
||||
" to work properly. If it doesn't exist, then we can back it up to using
|
||||
" ack, or silver surfer.
|
||||
set grepprg=rg
|
||||
if filereadable(expand("~/bin/fbgrep"))
|
||||
set grepprg=~/bin/fbgrep
|
||||
endif
|
||||
" bind K to grep word under cursor
|
||||
nnoremap K :grep! "<C-R><C-W>"<CR>:cw<CR>
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Custom Functions
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" Creates a floating window with a most recent buffer to be used
|
||||
function! CreateCenteredFloatingWindow()
|
||||
let width = float2nr(&columns * 0.6)
|
||||
let height = float2nr(&lines * 0.6)
|
||||
let top = ((&lines - height) / 2) - 1
|
||||
let left = (&columns - width) / 2
|
||||
let opts = {'relative': 'editor', 'row': top, 'col': left, 'width': width, 'height': height, 'style': 'minimal'}
|
||||
|
||||
let top = "╭" . repeat("─", width - 2) . "╮"
|
||||
let mid = "│" . repeat(" ", width - 2) . "│"
|
||||
let bot = "╰" . repeat("─", width - 2) . "╯"
|
||||
let lines = [top] + repeat([mid], height - 2) + [bot]
|
||||
let s:buf = nvim_create_buf(v:false, v:true)
|
||||
call nvim_buf_set_lines(s:buf, 0, -1, v:true, lines)
|
||||
call nvim_open_win(s:buf, v:true, opts)
|
||||
set winhl=Normal:Floating
|
||||
let opts.row += 1
|
||||
let opts.height -= 2
|
||||
let opts.col += 2
|
||||
let opts.width -= 4
|
||||
call nvim_open_win(nvim_create_buf(v:false, v:true), v:true, opts)
|
||||
autocmd BufWipeout <buffer> exe 'bwipeout '.s:buf
|
||||
tnoremap <buffer> <silent> <Esc> <C-\><C-n><CR>:bw!<CR>
|
||||
endfunction
|
||||
|
||||
" Cycle through relativenumber + number, number (only), and no numbering.
|
||||
function! CycleNumbering() abort
|
||||
if exists('+relativenumber')
|
||||
execute {
|
||||
\ '00': 'set relativenumber | set number',
|
||||
\ '01': 'set norelativenumber | set number',
|
||||
\ '10': 'set norelativenumber | set nonumber',
|
||||
\ '11': 'set norelativenumber | set number' }[&number . &relativenumber]
|
||||
else
|
||||
" No relative numbering, just toggle numbers on and off.
|
||||
set number!<CR>
|
||||
endif
|
||||
endfunction
|
||||
|
||||
Reference in New Issue
Block a user