Created
July 20, 2020 04:16
-
-
Save sadatnfs/ca04273a411ecbdf26026d9183a2dc21 to your computer and use it in GitHub Desktop.
Quick neovim setup
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
call plug#begin() | |
Plug 'brooth/far.vim' | |
Plug 'SirVer/ultisnips' | |
Plug 'honza/vim-snippets' | |
Plug 'scrooloose/nerdtree' " file list | |
Plug 'majutsushi/tagbar' " show tags in a bar (functions etc) for easy browsing | |
Plug 'vim-airline/vim-airline' " make statusline awesome | |
Plug 'vim-airline/vim-airline-themes' " themes for statusline | |
Plug 'jonathanfilip/vim-lucius' " nice white colortheme | |
Plug 'davidhalter/jedi-vim' " jedi for python | |
Plug 'tiagofumo/vim-nerdtree-syntax-highlight' "to highlight files in nerdtree | |
Plug 'Vimjas/vim-python-pep8-indent' "better indenting for python | |
Plug 'kien/ctrlp.vim' " fuzzy search files | |
Plug 'tweekmonster/impsort.vim' " color and sort imports | |
Plug 'wsdjeg/FlyGrep.vim' " awesome grep on the fly | |
Plug 'w0rp/ale' " python linters | |
Plug 'airblade/vim-gitgutter' " show git changes to files in gutter | |
Plug 'tpope/vim-commentary' "comment-out by gc | |
Plug 'roxma/nvim-yarp' " dependency of ncm2 | |
Plug 'ncm2/ncm2' " awesome autocomplete plugin | |
Plug 'HansPinckaers/ncm2-jedi' " fast python completion (use ncm2 if you want type info or snippet support) | |
Plug 'ncm2/ncm2-bufword' " buffer keyword completion | |
Plug 'ncm2/ncm2-path' " filepath completion | |
" Better Visual Guide | |
Plug 'Yggdroot/indentLine' | |
" syntax check | |
Plug 'w0rp/ale' | |
" Formater | |
Plug 'Chiel92/vim-autoformat' | |
" GLOT | |
Plug 'sheerun/vim-polyglot' | |
Plug 'maralla/completor.vim' | |
" Plug 'jalvesaq/Nvim-R' | |
" connect to a REPL | |
Plug 'jpalardy/vim-slime' | |
" FROM https://github.com/mdzhang/dotfiles/blob/master/vim/.vimrc | |
Plug 'roxma/vim-hug-neovim-rpc' | |
Plug 'godlygeek/tabular' | |
" show git diff (added, mod'd, removed) in the gutter | |
Plug 'mhinz/vim-signify' | |
" show file content outline | |
Plug 'majutsushi/tagbar' | |
Plug 'cocopon/iceberg.vim' | |
Plug 'ayu-theme/ayu-vim' | |
" rainbow bracket highlighting | |
Plug 'luochen1990/rainbow' | |
" Sidebar | |
Plug 'kshenoy/vim-signature' | |
" Python | |
" | |
" code folding | |
Plug 'tmhedberg/SimpylFold' | |
" auto indentation | |
Plug 'vim-scripts/indentpython.vim' | |
" better jinja filetype detection | |
Plug 'lepture/vim-jinja' | |
" git | |
Plug 'tpope/vim-fugitive' | |
Plug 'scrooloose/nerdtree' | |
" easily bulk un/comment regions | |
Plug 'scrooloose/nerdcommenter' | |
" easily expand/collapse visually selected region | |
Plug 'terryma/vim-expand-region' | |
" easily move selected code up/down | |
Plug 'matze/vim-move' | |
" easily add/remove/change quotes etc. for selected text objects | |
" ds" to delete surrounding quotes | |
" ys[select text obj]" to add quotes | |
" cs"' to replace " with ' | |
Plug 'tpope/vim-surround' | |
" additional text objects | |
Plug 'wellle/targets.vim' | |
" syntax checker | |
Plug 'w0rp/ale' | |
" code search/replace tools | |
Plug 'dyng/ctrlsf.vim' | |
" search everything | |
Plug 'junegunn/fzf' | |
Plug 'junegunn/fzf.vim' | |
" incremental search highlighting w/ regex search support (use /\v) | |
Plug 'haya14busa/incsearch.vim' | |
" highlight all occurrences of hovered over token | |
Plug 'RRethy/vim-illuminate' | |
" included in polyglot, but | |
" https://github.com/sheerun/vim-polyglot/issues/152 | |
Plug 'plasticboy/vim-markdown' | |
" included in vim-polyglot, but ctags not detected properly | |
Plug 'derekwyatt/vim-scala' | |
" interactive scratchpad that shows output as right side comment | |
Plug 'metakirby5/codi.vim' | |
" show markers in sidebar | |
Plug 'kshenoy/vim-signature' | |
" todo | |
Plug 'lukaszkorecki/workflowish' | |
" | |
" JSON | |
" | |
Plug 'tpope/vim-jdaddy' | |
" | |
" LookML | |
" | |
Plug 'thalesmello/lkml.vim' | |
" | |
" Fluentd | |
" | |
Plug 'itkq/fluentd-vim' | |
" devicons and glyphs (must be last) | |
Plug 'ryanoasis/vim-devicons' | |
call plug#end() | |
" Let slime know we're using tmux | |
let g:slime_target = "tmux" | |
" Settings from: | |
" https://medium.com/@hanspinckaers/setting-up-vim-as-an-ide-for-python-773722142d1d | |
" path to python | |
let g:python3_host_prog = '/opt/conda/bin/python' | |
filetype indent on | |
set fileformat=unix | |
set shortmess+=c | |
set mouse=a " change cursor per mode | |
set number " always show current line number | |
set smartcase " better case-sensitivity when searching | |
set wrapscan " begin search from top of file when nothing is found anymore | |
set expandtab | |
set tabstop=4 | |
set shiftwidth=4 | |
set fillchars+=vert:\ " remove chars from seperators | |
set softtabstop=4 | |
set history=1000 " remember more commands and search history | |
set nobackup " no backup or swap file, live dangerously | |
set noswapfile " swap files give annoying warning | |
set breakindent " preserve horizontal whitespace when wrapping | |
set showbreak=.. | |
set lbr " wrap words | |
set nowrap " i turn on wrap manually when needed | |
set scrolloff=3 " keep three lines between the cursor and the edge of the screen | |
set undodir=~/.vim/undodir | |
set undofile " save undos | |
set undolevels=10000 " maximum number of changes that can be undone | |
set undoreload=100000 " maximum number lines to save for undo on a buffer reload | |
set noshowmode " keep command line clean | |
set noshowcmd | |
set laststatus=2 " always slow statusline | |
set splitright " i prefer splitting right and below | |
set splitbelow | |
set hlsearch " highlight search and search while typing | |
set incsearch | |
set cpoptions+=x " stay at seach item when <esc> | |
set noerrorbells " remove bells (i think this is default in neovim) | |
set visualbell | |
set t_vb= | |
set relativenumber | |
set viminfo='20,<1000 " allow copying of more than 50 lines to other applications | |
" easy split movement | |
nnoremap <C-h> <C-w>h | |
nnoremap <C-j> <C-w>j | |
nnoremap <C-k> <C-w>k | |
nnoremap <C-l> <C-w>l | |
" tabs: | |
nnoremap tn :tabnew<Space> | |
nnoremap tk :tabnext<CR> | |
nnoremap tj :tabprev<CR> | |
nnoremap th :tabfirst<CR> | |
nnoremap tl :tablast<CR> | |
" " colorscheme options | |
"let g:lucius_style="light" | |
"let g:lucius_contrast="low" | |
"colo lucius | |
"set background=light | |
" mapping Esc | |
imap <F13> <Esc> | |
cnoremap <Esc> <C-c> | |
"" inoremap <c-c> <ESC> | |
"" nnoremap <C-z> <Esc> " disable terminal ctrl-z | |
" map S to replace current word with pasteboard | |
nnoremap S diw"0P | |
nnoremap cc "_cc | |
nnoremap q: :q<CR> | |
nnoremap w: :w<CR> | |
" map paste, yank and delete to named register so the content | |
" will not be overwritten (I know I should just remember...) | |
nnoremap x "_x | |
vnoremap x "_x | |
set clipboard=unnamedplus | |
" toggle nerdtree on ctrl+n | |
map <C-n> :NERDTreeToggle<CR> | |
map <C-t> :set nosplitright<CR>:TagbarToggle<CR>:set splitright<CR> | |
" ncm2 settings | |
autocmd BufEnter * call ncm2#enable_for_buffer() | |
set completeopt=menuone,noselect,noinsert | |
" make it FAST | |
let ncm2#popup_delay = 5 | |
let ncm2#complete_length = [[1,1]] | |
let g:ncm2#matcher = 'substrfuzzy' | |
set pumheight=5 | |
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" | |
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>" | |
inoremap <silent> <expr> <CR> (pumvisible() && empty(v:completed_item)) ? "\<c-y>\<cr>" : "\<CR>" | |
let g:airline_powerline_fonts = 1 | |
let g:airline_section_y = "" | |
let g:airline#extensions#tabline#enabled = 1 | |
" Airline settings | |
" do not show error/warning section | |
let g:airline_section_error = "" | |
let g:airline_section_warning = "" | |
if !exists('g:airline_symbols') | |
let g:airline_symbols = {} | |
endif | |
" theicfire .vimrc tips | |
" With a map leader it's possible to do extra key combinations | |
" like <leader>w saves the current file | |
let mapleader = " " " Leader is the space key | |
let g:mapleader = " " | |
let maplocalleader = "`" | |
let g:maplocalleader = "`" | |
nnoremap <SPACE> <Nop> | |
"auto indent for brackets | |
nmap <leader>w :w!<cr> | |
nmap <leader>q :lcl<cr>:q<cr> | |
nnoremap <leader>h :nohlsearch<Bar>:echo<CR> | |
" FlyGrep settings | |
nnoremap <leader>s :FlyGrep<cr> | |
" easy breakpoint python | |
au FileType python map <silent> <leader>b ofrom pudb import set_trace; set_trace()<esc> | |
au FileType python map <silent> <leader>B Ofrom pudb import set_trace; set_trace()<esc> | |
au FileType python map <silent> <leader>j ofrom pdb import set_trace; set_trace()<esc> | |
au FileType python map <silent> <leader>J Ofrom pdb import set_trace; set_trace()<esc> | |
" ale options | |
let g:ale_python_flake8_options = '--ignore=E129,E501,E302,E265,E241,E305,E402,W503' | |
let g:ale_python_pylint_options = '-j 0 --max-line-length=120' | |
let g:ale_list_window_size = 4 | |
let g:ale_sign_column_always = 0 | |
let g:ale_open_list = 1 | |
let g:ale_keep_list_window_open = '1' | |
" Options are in .pylintrc! | |
highlight VertSplit ctermbg=253 | |
let g:ale_sign_error = '‼' | |
let g:ale_sign_warning = '∙' | |
let g:ale_lint_on_text_changed = 'never' | |
let g:ale_lint_on_enter = '0' | |
let g:ale_lint_on_save = '1' | |
nmap <silent> <C-M> <Plug>(ale_previous_wrap) | |
nmap <silent> <C-m> <Plug>(ale_next_wrap) | |
" mapping to make movements operate on 1 screen line in wrap mode | |
function! ScreenMovement(movement) | |
if &wrap | |
return "g" . a:movement | |
else | |
return a:movement | |
endif | |
endfunction | |
onoremap <silent> <expr> j ScreenMovement("j") | |
onoremap <silent> <expr> k ScreenMovement("k") | |
onoremap <silent> <expr> 0 ScreenMovement("0") | |
onoremap <silent> <expr> ^ ScreenMovement("^") | |
onoremap <silent> <expr> $ ScreenMovement("$") | |
nnoremap <silent> <expr> j ScreenMovement("j") | |
nnoremap <silent> <expr> k ScreenMovement("k") | |
nnoremap <silent> <expr> 0 ScreenMovement("0") | |
nnoremap <silent> <expr> ^ ScreenMovement("^") | |
nnoremap <silent> <expr> $ ScreenMovement("$") | |
" highlight python and self function | |
autocmd BufEnter * syntax match Type /\v\.[a-zA-Z0-9_]+\ze(\[|\s|$|,|\]|\)|\.|:)/hs=s+1 | |
autocmd BufEnter * syntax match pythonFunction /\v[[:alnum:]_]+\ze(\s?\()/ | |
hi def link pythonFunction Function | |
autocmd BufEnter * syn match Self "\(\W\|^\)\@<=self\(\.\)\@=" | |
highlight self ctermfg=239 | |
" jedi options | |
let g:jedi#auto_initialization = 1 | |
let g:jedi#completions_enabled = 0 | |
let g:jedi#auto_vim_configuration = 0 | |
let g:jedi#smart_auto_mappings = 0 | |
let g:jedi#popup_on_dot = 0 | |
let g:jedi#completions_command = "" | |
let g:jedi#show_call_signatures = "1" | |
let g:jedi#show_call_signatures_delay = 0 | |
let g:jedi#use_tabs_not_buffers = 0 | |
let g:jedi#show_call_signatures_modes = 'i' " ni = also in normal mode | |
let g:jedi#enable_speed_debugging=0 | |
" Impsort option | |
hi pythonImportedObject ctermfg=127 | |
hi pythonImportedFuncDef ctermfg=127 | |
hi pythonImportedClassDef ctermfg=127 | |
" Remove all trailing whitespace by pressing C-S | |
nnoremap <C-S> :let _s=@/<Bar>:%s/\s\+$//e<Bar>:let @/=_s<Bar><CR> | |
autocmd BufReadPost quickfix nnoremap <buffer> <CR> <CR> | |
" move between defs python: | |
" # NOTE: this break shortcuts with [] | |
nnoremap [[ [m | |
nnoremap ]] ]m | |
nnoremap <silent><nowait> [ [[ | |
nnoremap <silent><nowait> ] ]] | |
function! MakeBracketMaps() | |
nnoremap <silent><nowait><buffer> [ :<c-u>exe 'normal '.v:count.'[m'<cr> | |
nnoremap <silent><nowait><buffer> ] :<c-u>exe 'normal '.v:count.']m'<cr> | |
endfunction | |
augroup bracketmaps | |
autocmd! | |
autocmd FileType python call MakeBracketMaps() | |
augroup END | |
" neovim options | |
au BufEnter * if &buftype == 'terminal' | :startinsert | endif | |
nnoremap <C-a> <Esc> | |
nnoremap <C-x> <Esc> | |
" vimgutter options | |
let g:gitgutter_override_sign_column_highlight = 0 | |
let g:gitgutter_map_keys = 0 | |
" ctrl p options | |
let g:ctrlp_custom_ignore = '\v\.(npy|jpg|pyc|so|dll)$' | |
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard'] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment