Last active
January 14, 2019 09:51
-
-
Save solrevdev/c7ce071f3b3ab22ad1eaf16252ed5cfa to your computer and use it in GitHub Desktop.
.vimrc dotnetcore friendly
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
execute pathogen#infect() | |
set encoding=utf-8 | |
" Use ~x on an English Windows version or ~n for French. | |
if has("win32") | |
au GUIEnter * simalt ~x | |
endif | |
if &compatible | |
set nocompatible | |
endif | |
call plug#begin('~/.local/share/nvim/plugged') | |
Plug 'mhinz/vim-startify' | |
Plug 'scrooloose/nerdtree' | |
Plug 'scrooloose/nerdcommenter' | |
Plug 'tpope/vim-surround' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'tpope/vim-fugitive' | |
Plug 'mhinz/vim-signify' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'Raimondi/delimitMate' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'pelodelfuego/vim-swoop' | |
Plug 'junegunn/gv.vim' | |
Plug 'mbbill/undotree' | |
Plug 'shougo/vimproc.vim', {'do': 'make'} | |
Plug 'tpope/vim-dispatch' | |
Plug 'SirVer/ultisnips' | |
Plug 'majutsushi/tagbar' | |
Plug 'easymotion/vim-easymotion' | |
Plug 'morhetz/gruvbox' | |
Plug 'honza/vim-snippets' | |
Plug 'omnisharp/omnisharp-vim', { 'do': 'cd server && xbuild' } | |
Plug 'OrangeT/vim-csharp' | |
"if has('nvim') | |
" Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } | |
"else | |
Plug 'Shougo/deoplete.nvim' | |
Plug 'roxma/nvim-yarp' | |
Plug 'roxma/vim-hug-neovim-rpc' | |
"endif | |
Plug 'dimixar/deoplete-omnisharp' | |
Plug 'ervandew/supertab' | |
Plug 'idanarye/vim-merginal' | |
Plug 'randomize/switch.vim' | |
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
Plug 'junegunn/fzf.vim' | |
Plug 'hoelzro/vim-split-navigate' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'w0rp/ale' | |
Plug 'zchee/deoplete-jedi' | |
Plug 'simeji/winresizer' | |
Plug 'hecal3/vim-leader-guide' | |
Plug 'chrisbra/vim-commentary' | |
Plug 'kien/ctrlp.vim' | |
Plug 'christoomey/vim-system-copy' | |
Plug 'christoomey/vim-tmux-navigator' | |
Plug 'christoomey/vim-tmux-runner' | |
Plug 'christoomey/vim-sort-motion' | |
Plug 'christoomey/vim-run-interactive' | |
Plug 'christoomey/vim-titlecase' | |
Plug 'tpope/vim-surround' | |
Plug 'vimlab/split-term.vim' | |
Plug 'mcchrish/nnn.vim' | |
Plug 'omnisharp/omnisharp-roslyn' | |
Plug 'omnisharp/omnisharp-server' | |
Plug 'chrisbra/csv.vim' | |
call plug#end() | |
" ********************************** | |
" General configs goes here!! | |
filetype plugin indent on | |
syntax enable | |
set termguicolors | |
if has("unix") | |
let s:uname = system("uname -s") | |
if s:uname == "Darwin\n" | |
set guifont=Hack\ Regular:h11" | |
else | |
set guifont=Hack\ 10 | |
endif | |
else | |
set guifont=Hack:h10 | |
endif | |
set fileencodings=utf-8,latin1 | |
set listchars=tab:>·,trail:• | |
set list | |
set ff=unix | |
set guioptions-=m "remove menu bar | |
set guioptions-=T "remove toolbar | |
set guioptions-=r "remove right-hand scroll bar | |
set guioptions-=L "remove left-hand scroll bar | |
set number | |
set relativenumber | |
set shiftwidth=4 | |
set smartcase | |
set smarttab | |
set autoindent | |
set tabstop=4 | |
set softtabstop=4 | |
set expandtab | |
set showcmd | |
set cursorline | |
set wildmenu | |
set showmatch | |
set lazyredraw | |
set ignorecase | |
set foldenable | |
set foldlevelstart=0 | |
set foldnestmax=10 | |
set foldmethod=syntax | |
" color scheme config | |
set background=dark | |
let g:gruvbox_contrast_dark='hard' | |
colorscheme gruvbox | |
" ********************************* | |
" Plugin configs go here!! | |
" Ale config | |
let g:ale_sign_column_always = 1 | |
let g:ale_sign_error = 'E' | |
let g:ale_sign_warning = 'W' | |
" Split navigate config | |
let g:splitnavigate_start_key = "<leader><leader><leader>" | |
"default white on blue | |
highlight default TopHighlight term=bold ctermfg=252 ctermbg=18 guifg=fg guibg=#000080 | |
" default yellow on red | |
highlight default BottomHighlight term=standout ctermfg=186 ctermbg=88 guifg=#d0d090 guibg=#800000 | |
" airline config | |
set laststatus=2 | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline#extensions#hunks#enabled=1 | |
let g:airline#extensions#branch#enabled=1 | |
"let g:airline_section_b = '%{strftime("%c")}' | |
let g:airline_section_c = 'WN: %{winnr()}' | |
let g:airline_section_y = 'BN: %{bufnr("%")} %{&encoding}' | |
let g:airline_powerline_fonts = 1 | |
"if !exists('g:airline_symbols') | |
"let g:airline_symbols = {} | |
"endif | |
"" unicode symbols | |
"let g:airline_left_sep = '»' | |
"let g:airline_left_sep = '▶' | |
"let g:airline_right_sep = '«' | |
"let g:airline_right_sep = '◀' | |
"let g:airline_symbols.linenr = '␊' | |
"let g:airline_symbols.linenr = '' | |
"let g:airline_symbols.linenr = '¶' | |
"let g:airline_symbols.branch = '⎇' | |
"let g:airline_symbols.paste = 'ρ' | |
"let g:airline_symbols.paste = 'Þ' | |
"let g:airline_symbols.paste = '∥' | |
"let g:airline_symbols.whitespace = 'Ξ' | |
"" airline symbols | |
"let g:airline_left_sep = '' | |
"let g:airline_left_alt_sep = '' | |
"let g:airline_right_sep = '' | |
"let g:airline_right_alt_sep = '' | |
"let g:airline_symbols.branch = '' | |
"let g:airline_symbols.readonly = '' | |
"let g:airline_symbols.linenr = '' | |
"Switch config | |
let g:switch_mapping = "" | |
let g:switch_find_fallback_match_cursor_right = 1 | |
let g:switch_find_fallback_match_line_start = 1 | |
autocmd FileType cs let b:switch_custom_definitions = | |
\ [ | |
\ [ '+=' , '-=' ], | |
\ [ 'private' , 'public', 'protected' ], | |
\ [ 'struct' , 'class' ], | |
\ [ 'OnDisable()' , 'OnEnable()' ], | |
\ [ 'Update()' , 'FixedUpdate()' ], | |
\ [ 'Debug.Log(' , 'Debug.LogFormat('], | |
\ [ 'Debug.LogError(', 'Debug.LogErrorFormat(' ], | |
\ [ 'Debug.LogWarning(', 'Debug.LogWarningFormat(' ] | |
\ ] | |
" | |
" Undotree config | |
if has("persistent_undo") | |
set undodir=~/.undodir/ | |
set undofile | |
endif | |
" OmniSharp config | |
let g:OmniSharp_server_type = 'roslyn' | |
let g:OmniSharp_selector_ui = 'fzf' | |
let g:OmniSharp_want_snippet=1 | |
set splitbelow | |
set completeopt=longest,menuone | |
" deoplete config | |
" let g:deoplete#enable_at_startup = 1 | |
" let g:deoplete#max_menu_width = 1000 | |
" let g:deoplete#auto_complete_start_length = 1 | |
" call deoplete#custom#set('ultisnips', 'matchers', ['matcher_fuzzy']) | |
" call deoplete#custom#set('_', 'matchers', ['matcher_full_fuzzy']) | |
autocmd CompleteDone * pclose! | |
"Super tab settings - uncomment the next 4 lines | |
let g:SuperTabDefaultCompletionType = 'context' | |
let g:SuperTabContextDefaultCompletionType = "<c-x><c-o>" | |
let g:SuperTabDefaultCompletionTypeDiscovery = ["&omnifunc:<c-x><c-o>","&completefunc:<c-x><c-n>"] | |
let g:SuperTabClosePreviewOnPopupClose = 1 | |
" ********************************* | |
" All Language settings start here | |
" C# | |
augroup csharp_dimixar | |
autocmd FileType cs set foldmethod=syntax | |
autocmd FileType cs set foldlevelstart=5 | |
autocmd FileType cs autocmd BufWritePre <buffer> %s/\s\+$//e | |
augroup END | |
set updatetime=500 | |
sign define OmniSharpCodeActions text=💡 | |
augroup OSCountCodeActions | |
autocmd! | |
autocmd FileType cs set signcolumn=yes | |
autocmd CursorHold *.cs call OSCountCodeActions() | |
augroup END | |
function! OSCountCodeActions() abort | |
if OmniSharp#CountCodeActions({-> execute('sign unplace 99')}) | |
let l = getpos('.')[1] | |
let f = expand('%:p') | |
execute ':sign place 99 line='.l.' name=OmniSharpCodeActions file='.f | |
endif | |
endfunction. | |
" leader guide config | |
let g:lmap = {} | |
call leaderGuide#register_prefix_descriptions(' ', "g:lmap") | |
" ******************************** | |
" All mappings start here | |
let mapleader = ' ' | |
"leader guide startup | |
nnoremap <silent> <leader> :LeaderGuide ' '<CR> | |
vnoremap <silent> <leader> :LeaderGuideVisual ' '<CR> | |
"nnoremap <silent> <leader> :LeaderGuideD g:lmap<CR> | |
" Easy copy/paste to/from system clipboard | |
let g:lmap.p = ['\"+p', 'Paste from system clipboard'] | |
nnoremap <silent> <leader>p "+p | |
vnoremap <silent> <leader>y "+y | |
let g:lmap.y = ['\"+y', 'Copy to system clipboard'] | |
" Folding shortcuts | |
" Toggle fold | |
nmap <silent> <leader>eft za | |
" Open All folds | |
nmap <silent> <leader>efO zR | |
" Close all folds | |
nmap <silent> <leader>efC zM | |
let g:lmap.e = {'name' : 'Extras'} | |
let g:lmap.e.f = {'name' : 'Folds'} | |
let g:lmap.e.f.t = ['za', 'Toggle fold'] | |
let g:lmap.e.f.O = ['zR', 'Open all folds'] | |
let g:lmap.e.f.C = ['zM', 'Close all folds'] | |
" file shortcuts (like spacemacs) | |
nmap <silent> <leader>fs :w<CR>:echo "saved file!!!"<CR> | |
let g:lmap.f = {'name': 'Files'} | |
let g:lmap.f.s = ['w', 'Save current file'] | |
" buffer shortcuts | |
nmap <silent> <leader>bd :bd<CR>:echo "Buffer Killed!!!"<CR> | |
nmap <silent> <leader>bdd :bd!<CR>:echo "Buffer Murdered!!!"<CR> | |
" startify buffer shortcut | |
nmap <silent> <leader>bs :Startify<CR> | |
let g:lmap.b = {'name': 'Buffer'} | |
let g:lmap.b.d = ['bd', 'Delete buffer'] | |
let g:lmap.b.D = ['bd!', 'Delete buffer forced'] | |
let g:lmap.b.s = ['Startify', 'Go to Startify'] | |
" window shortcuts | |
nmap <silent> <leader>wj <C-w>j | |
nmap <silent> <leader>wk <C-w>k | |
nmap <silent> <leader>wh <C-w>h | |
nmap <silent> <leader>wl <C-w>l | |
nmap <silent> <leader>wJ <C-w>J | |
nmap <silent> <leader>wK <C-w>K | |
nmap <silent> <leader>wH <C-w>H | |
nmap <silent> <leader>wL <C-w>L | |
nmap <silent> <leader>wv <C-w>v | |
nmap <silent> <leader>ws <C-w>s | |
nmap <silent> <leader>wd :hide<CR> | |
nmap <silent> <leader>wtt :NERDTreeToggle<CR> | |
nmap <silent> <leader>wtc :TagbarToggle<CR> | |
nmap <silent> <leader>wu :UndotreeToggle<CR> | |
nmap <silent> <leader>wn <C-w>w | |
nmap <silent> <leader>qq :qa<CR> | |
nmap <silent> <leader>qQ :qa!<CR> | |
let g:lmap.w = {'name': 'Window'} | |
let g:lmap.w.j = ['<C-w>j', 'Go down'] | |
let g:lmap.w.k = ['<C-w>k', 'Go up'] | |
let g:lmap.w.h = ['<C-w>h', 'Go left'] | |
let g:lmap.w.l = ['<C-w>l', 'Go right'] | |
let g:lmap.w.J = ['<C-w>J', 'Go lowest'] | |
let g:lmap.w.K = ['<C-w>K', 'Go highest'] | |
let g:lmap.w.H = ['<C-w>H', 'Go left most'] | |
let g:lmap.w.L = ['<C-w>L', 'Go right most'] | |
let g:lmap.w.v = ['<C-w>v', 'Split vertical'] | |
let g:lmap.w.s = ['<C-w>s', 'Split horizontal'] | |
let g:lmap.w.d = ['hide', 'Destroy window'] | |
let g:lmap.w.t = {'name': 'Toggles'} | |
let g:lmap.w.t.t = ['NERDTreeToggle', 'NERDTree'] | |
let g:lmap.w.t.c = ['TagbarToggle', 'Tagbar'] | |
let g:lmap.w.t.u = ['UndotreeToggle', 'Undotree'] | |
let g:lmap.w.n = ['<C-w>w', 'Move to window number'] | |
let g:lmap.q = {'name': 'Quit vim'} | |
let g:lmap.q.q = ['qa', 'Normal'] | |
let g:lmap.q.Q = ['qa!', 'Forced'] | |
" fzf mappings | |
nmap <leader>uff :GFiles<CR> | |
nmap <leader>ufb :Buffers<CR> | |
nmap <leader>ufw :Windows<CR> | |
nmap <leader>ufo :BTags<CR> | |
nmap <leader>uft :Tags<CR> | |
nmap <leader>ufl :BLines<CR> | |
nmap <leader>ufs :Snippets<CR> | |
let g:lmap.u = {'name': 'Unified search'} | |
let g:lmap.u.f = {'name': 'fzf'} | |
let g:lmap.u.f.f = ['GFiles', 'Search files'] | |
let g:lmap.u.f.b = ['Buffers', 'Search buffers'] | |
let g:lmap.u.f.w = ['Windows', 'Search windows'] | |
let g:lmap.u.f.o = ['BTags', 'Search buffer tags'] | |
let g:lmap.u.f.t = ['Tags', 'Search project tags'] | |
let g:lmap.u.f.l = ['BLines', 'Search buffer lines'] | |
let g:lmap.u.f.s = ['Snippets', 'Search Snippets'] | |
" Git mappings | |
nmap <leader>gs :Gstatus<CR> | |
nmap <leader>gc :Gcommit<CR> | |
nmap <leader>gp :Gpush | |
nmap <leader>gP :Gpull<CR> | |
nmap <leader>gl :GV<CR> | |
nmap <leader>gb :MerginalToggle<CR> | |
let g:lmap.g = {'name': 'Git'} | |
let g:lmap.g.s = ['Gstatus', 'Status'] | |
let g:lmap.g.c = ['Gcommit', 'Commit'] | |
let g:lmap.g.p = ['Gpush', 'Push'] | |
let g:lmap.g.P = ['Gpull', 'Pull'] | |
let g:lmap.g.l = ['GV', 'Log Tree'] | |
let g:lmap.g.b = ['MerginalToggle', 'Merginal toggle'] | |
" Vim swoop config | |
let g:swoopUseDefaultKeyMap = 0 | |
nmap <leader>ss :call Swoop()<CR> | |
vmap <leader>ss :call SwoopSelection()<CR> | |
nmap <leader>sS :call SwoopMulti()<CR> | |
vmap <leader>sS :call SwoopMultiSelection()<CR> | |
let g:lmap.s = {'name': 'Swoop'} | |
let g:lmap.s.s = ['call Swoop()', 'Current buffer'] | |
let g:lmap.s.S = ['call SwoopMulti()', 'All buffers'] | |
" Omnisharp mappings | |
augroup omnisharp_commands | |
autocmd! | |
"Set autocomplete function to OmniSharp (if not using YouCompleteMe completion plugin) | |
autocmd FileType cs setlocal omnifunc=OmniSharp#Complete | |
" Synchronous build (blocks Vim) | |
"autocmd FileType cs nnoremap <F5> :wa!<cr>:OmniSharpBuild<cr> | |
" Builds can also run asynchronously with vim-dispatch installed | |
" automatic syntax check on events (TextChanged requires Vim 7.4) | |
"autocmd BufEnter,TextChanged,InsertLeave *.cs Neomake | |
" Automatically add new cs files to the nearest project on save | |
autocmd BufWritePost *.cs call OmniSharp#AddToProject() | |
"show type information automatically when the cursor stops moving | |
autocmd CursorHold *.cs call OmniSharp#TypeLookupWithoutDocumentation() | |
"The following commands are contextual, based on the current cursor position. | |
autocmd FileType cs nnoremap <leader>mb :wa!<cr>:OmniSharpBuildAsync<cr> | |
autocmd FileType cs nnoremap <leader>mg :OmniSharpGotoDefinition<cr> | |
autocmd FileType cs nnoremap <leader>mt :OmniSharpTypeLookup<cr> | |
autocmd FileType cs nnoremap <leader>mr :OmniSharpRename<CR> | |
autocmd FileType cs nnoremap <leader>mc :OmniSharpCodeFormat<CR> | |
autocmd FileType cs nnoremap <leader>md :OmniSharpDocumentation<cr> | |
autocmd FileType cs nnoremap <leader>mfi :OmniSharpFindImplementations<cr> | |
autocmd FileType cs nnoremap <leader>mft :OmniSharpFindType<cr> | |
autocmd FileType cs nnoremap <leader>mfs :OmniSharpFindSymbol<cr> | |
autocmd FileType cs nnoremap <leader>mfu :OmniSharpFindUsages<cr> | |
autocmd FileType cs nnoremap <leader>mfm :OmniSharpFindMembers<cr> | |
autocmd FileType cs nnoremap <leader>mss :OmniSharpStartServer<cr> | |
autocmd FileType cs nnoremap <leader>msp :OmniSharpStopServer<cr> | |
autocmd FileType cs nnoremap <leader>mxi :OmniSharpFixIssue<cr> | |
autocmd FileType cs nnoremap <leader>mxu :OmniSharpFixUsings<cr> | |
let g:mmap = {'name': 'OmniSharp'} | |
let g:mmap.b = ['OmniSharpBuildAsync', 'Build'] | |
let g:mmap.g = ['OmniSharpGotoDefinition', 'Go to definition'] | |
let g:mmap.t = ['OmniSharpTypeLookup', 'Lookup type'] | |
let g:mmap.r = ['OmniSharpRename', 'Rename'] | |
let g:mmap.c = ['OmniSharpCodeFormat', 'Code format'] | |
let g:mmap.d = ['OmniSharpDocumentation', 'Documentation'] | |
let g:mmap.f = {'name': 'Find'} | |
let g:mmap.f.i = ['OmniSharpFindImplementations', 'Implementation'] | |
let g:mmap.f.t = ['OmniSharpFindType', 'Type'] | |
let g:mmap.f.s = ['OmniSharpFindSymbol', 'Symbol'] | |
let g:mmap.f.u = ['OmniSharpFindUsages', 'Usages'] | |
let g:mmap.f.m = ['OmniSharpFindMembers', 'Members'] | |
let g:mmap.s = {'name': 'Server'} | |
let g:mmap.s.s = [':OmniSharpStartServer', 'Start'] | |
let g:mmap.s.p = [':OmniSharpStopServer', 'Stop'] | |
let g:mmap.x = {'name': 'Fix'} | |
let g:mmap.x.i = [':OmniSharpFixIssue', 'Issue'] | |
let g:mmap.x.u = [':OmniSharpFixUsings', 'Usings'] | |
autocmd FileType cs let g:lmap['m'] = g:mmap | |
"navigate up by method/property/field | |
autocmd FileType cs nnoremap <C-K> :OmniSharpNavigateUp<cr> | |
"navigate down by method/property/field | |
autocmd FileType cs nnoremap <C-J> :OmniSharpNavigateDown<cr> | |
augroup END | |
" Switch mapping | |
nmap <leader>sw :Switch<CR> | |
let g:lmap.s.w = ['Switch', 'Switch key-words'] | |
"Ultisnips mappings | |
let g:UltiSnipsExpandTrigger="<c-x><c-x>" | |
let g:UltiSnipsJumpForwardTrigger="<c-b>" | |
let g:UltiSnipsJumpBackwardTrigger="<c-z>" | |
"winresizer mapping | |
let g:winresizer_start_key = '<leader>wr' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment