diff options
Diffstat (limited to 'neovim')
-rw-r--r-- | neovim/.config/nvim/init.vim | 353 |
1 files changed, 353 insertions, 0 deletions
diff --git a/neovim/.config/nvim/init.vim b/neovim/.config/nvim/init.vim new file mode 100644 index 0000000..3bef9c7 --- /dev/null +++ b/neovim/.config/nvim/init.vim @@ -0,0 +1,353 @@ +" Fisa-nvim-config +" http://nvim.fisadev.com +" version: 9.5 beta + +" TODO current problems: +" * end key not working undef tmux+fish + +" ============================================================================ +" Vim-plug initialization +" Avoid modify this section, unless you are very sure of what you are doing + +let vim_plug_just_installed = 0 +let vim_plug_path = expand('~/.config/nvim/autoload/plug.vim') +if !filereadable(vim_plug_path) + echo "Installing Vim-plug..." + echo "" + silent !mkdir -p ~/.config/nvim/autoload + silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + let vim_plug_just_installed = 1 +endif + +" manually load vim-plug the first time +if vim_plug_just_installed + :execute 'source '.fnameescape(vim_plug_path) +endif + +" Obscure hacks done, you can now modify the rest of the .vimrc as you wish :) + +" ============================================================================ +" Active plugins +" You can disable or add new ones here: + +" this needs to be here, so vim-plug knows we are declaring the plugins we +" want to use +call plug#begin('~/.config/nvim/plugged') + +" Now the actual plugins: + +Plug 'ntpeters/vim-better-whitespace' +Plug 'lervag/vimtex' + +" Override configs by directory +Plug 'arielrossanigo/dir-configs-override.vim' + +" Code commenter +Plug 'scrooloose/nerdcommenter' + +" Better file browser +Plug 'scrooloose/nerdtree' + +" Class/module browser +Plug 'majutsushi/tagbar' +" TODO known problems: +" * current block not refreshing + +" Search results counter +Plug 'vim-scripts/IndexedSearch' + +" Terminal Vim with 256 colors colorscheme +Plug 'fisadev/fisa-vim-colorscheme' + +" Airline +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' + +" Code and files fuzzy finder +" Plug 'ctrlpvim/ctrlp.vim' +" Extension to ctrlp, for fuzzy command finder +" Plug 'fisadev/vim-ctrlp-cmdpalette' +Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } +Plug 'junegunn/fzf.vim' + +" Pending tasks list +Plug 'fisadev/FixedTaskList.vim' + +" Async autocompletion +"Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } +" Completion from other opened files +"Plug 'Shougo/context_filetype.vim' +" Python autocompletion +"Plug 'zchee/deoplete-jedi', { 'do': ':UpdateRemotePlugins' } +" Just to add the python go-to-definition and similar features, autocompletion +" from this plugin is disabled +"Plug 'davidhalter/jedi-vim' + +" Automatically close parenthesis, etc +"Plug 'Townk/vim-autoclose' + +" Surround +Plug 'tpope/vim-surround' + +" Indent text object +Plug 'michaeljsmith/vim-indent-object' + +" Indentation based movements +Plug 'jeetsukumaran/vim-indentwise' + +" Better language packs +Plug 'sheerun/vim-polyglot' + +" Ack code search (requires ack installed in the system) +Plug 'mileszs/ack.vim' +" TODO is there a way to prevent the progress which hides the editor? + +" Paint css colors with the real color +Plug 'lilydjwg/colorizer' +" TODO is there a better option for neovim? + +" Window chooser +Plug 't9md/vim-choosewin' + +" Automatically sort python imports +Plug 'fisadev/vim-isort' + +" Highlight matching html tags +Plug 'valloric/MatchTagAlways' + +" Generate html in a simple way +Plug 'mattn/emmet-vim' + +" Git integration +Plug 'tpope/vim-fugitive' + +" Git/mercurial/others diff icons on the side of the file lines +Plug 'mhinz/vim-signify' + +" Yank history navigation +Plug 'vim-scripts/YankRing.vim' + +" Linters +"Plug 'neomake/neomake' +" TODO is it running on save? or when? +" TODO not detecting errors, just style, is it using pylint? + +" Relative numbering of lines (0 is the current line) +" (disabled by default because is very intrusive and can't be easily toggled +" on/off. When the plugin is present, will always activate the relative +" numbering every time you go to normal mode. Author refuses to add a setting +" to avoid that) +Plug 'myusuf3/numbers.vim' + + + +" Tell vim-plug we finished declaring plugins, so it can load them +call plug#end() + +" ============================================================================ +" Install plugins the first time vim runs + +if vim_plug_just_installed + echo "Installing Bundles, please ignore key map error messages" + :PlugInstall +endif + +" ============================================================================ +" Vim settings and mappings +" You can edit them as you wish + +" tabs and spaces handling +set expandtab +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 + +" show line numbers +set nu + +" use 256 colors when possible +if (&term =~? 'mlterm\|xterm\|xterm-256\|screen-256') || has('nvim') + let &t_Co = 256 + colorscheme fisa +else + colorscheme delek +endif + +" needed so deoplete can auto select the first suggestion +set completeopt+=noinsert +" comment this line to enable autocompletion preview window +" (displays documentation related to the selected completion option) +set completeopt-=preview + +" autocompletion of files and commands behaves like shell +" (complete only the common part, list the options that match) +set wildmode=list:longest + +" save as sudo +ca w!! w !sudo tee "%" + +" tab navigation mappings +map tt :tabnew +map <M-Right> :tabn<CR> +imap <M-Right> <ESC>:tabn<CR> +map <M-Left> :tabp<CR> +imap <M-Left> <ESC>:tabp<CR> + +" when scrolling, keep cursor 3 lines away from screen border +set scrolloff=3 + +" clear search results +nnoremap <silent> // :noh<CR> + +" clear empty spaces at the end of lines on save of python files +autocmd BufWritePre *.py :%s/\s\+$//e + +" ============================================================================ +" Plugins settings and mappings +" Edit them as you wish. + +" Tagbar ----------------------------- + +" toggle tagbar display +map <F4> :TagbarToggle<CR> +" autofocus on tagbar open +let g:tagbar_autofocus = 1 + +" NERDTree ----------------------------- + +" toggle nerdtree display +map <F3> :NERDTreeToggle<CR> +" open nerdtree with the current file selected +nmap ,t :NERDTreeFind<CR> +" don;t show these file types +let NERDTreeIgnore = ['\.pyc$', '\.pyo$'] + +" Tasklist ------------------------------ + +" show pending tasks list +map <F2> :TaskList<CR> + +" Neomake ------------------------------ + +" Run linter on write +"autocmd! BufWritePost * Neomake + +" Fzf ------------------------------ + +" file finder mapping +nmap ,e :Files<CR> +" tags (symbols) in current file finder mapping +nmap ,g :BTag<CR> +" tags (symbols) in all files finder mapping +nmap ,G :Tag<CR> +" general code finder in current file mapping +nmap ,f :BLines<CR> +" general code finder in all files mapping +nmap ,F :Lines<CR> +" commands finder mapping +nmap ,c :Commands<CR> +" to be able to call CtrlP with default search text +"function! CtrlPWithSearchText(search_text, ctrlp_command_end) + "execute ':CtrlP' . a:ctrlp_command_end + "call feedkeys(a:search_text) +"endfunction +" same as previous mappings, but calling with current word as default text +"nmap ,wg :call CtrlPWithSearchText(expand('<cword>'), 'BufTag')<CR> +"nmap ,wG :call CtrlPWithSearchText(expand('<cword>'), 'BufTagAll')<CR> +"nmap ,wf :call CtrlPWithSearchText(expand('<cword>'), 'Line')<CR> +"nmap ,we :call CtrlPWithSearchText(expand('<cword>'), '')<CR> +"nmap ,pe :call CtrlPWithSearchText(expand('<cfile>'), '')<CR> +"nmap ,wm :call CtrlPWithSearchText(expand('<cword>'), 'MRUFiles')<CR> +"nmap ,wc :call CtrlPWithSearchText(expand('<cword>'), 'CmdPalette')<CR> + + +" Deoplete ----------------------------- + +" Use deoplete. + +let g:deoplete#enable_at_startup = 1 +let g:deoplete#enable_ignore_case = 1 +let g:deoplete#enable_smart_case = 1 +" complete with words from any opened file +let g:context_filetype#same_filetypes = {} +let g:context_filetype#same_filetypes._ = '_' + +" Jedi-vim ------------------------------ + +" Disable autocompletion (using deoplete instead) +let g:jedi#completions_enabled = 0 + +" All these mappings work only for python code: +" Go to definition +let g:jedi#goto_command = ',d' +" Find ocurrences +let g:jedi#usages_command = ',o' +" Find assignments +let g:jedi#goto_assignments_command = ',a' +" Go to definition in new tab +nmap ,D :tab split<CR>:call jedi#goto()<CR> + +" Ack.vim ------------------------------ + +" mappings +nmap ,r :Ack +nmap ,wr :Ack <cword><CR> + +" Window Chooser ------------------------------ + +" mapping +nmap - <Plug>(choosewin) +" show big letters +let g:choosewin_overlay_enable = 1 + +" Signify ------------------------------ + +" this first setting decides in which order try to guess your current vcs +" UPDATE it to reflect your preferences, it will speed up opening files +let g:signify_vcs_list = [ 'git', 'hg' ] +" mappings to jump to changed blocks +nmap <leader>sn <plug>(signify-next-hunk) +nmap <leader>sp <plug>(signify-prev-hunk) +" nicer colors +highlight DiffAdd cterm=bold ctermbg=none ctermfg=119 +highlight DiffDelete cterm=bold ctermbg=none ctermfg=167 +highlight DiffChange cterm=bold ctermbg=none ctermfg=227 +highlight SignifySignAdd cterm=bold ctermbg=237 ctermfg=119 +highlight SignifySignDelete cterm=bold ctermbg=237 ctermfg=167 +highlight SignifySignChange cterm=bold ctermbg=237 ctermfg=227 + +" Autoclose ------------------------------ + +" Fix to let ESC work as espected with Autoclose plugin +" (without this, when showing an autocompletion window, ESC won't leave insert +" mode) +let g:AutoClosePumvisible = {"ENTER": "\<C-Y>", "ESC": "\<ESC>"} + +" Yankring ------------------------------- + +" Fix for yankring and neovim problem when system has non-text things copied +" in clipboard +let g:yankring_clipboard_monitor = 0 +let g:yankring_history_dir = '~/.config/nvim/' + +" Airline ------------------------------ + +let g:airline_powerline_fonts = 0 +let g:airline_theme = 'bubblegum' +let g:airline#extensions#whitespace#enabled = 0 + +" to use fancy symbols for airline, uncomment the following lines and use a +" patched font (more info on docs/fancy_symbols.rst) +"if !exists('g:airline_symbols') + "let g:airline_symbols = {} +"endif +"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 = '⭡' + +set clipboard=unnamedplus +au BufNewFile,BufRead *.tex,*.latex,*.sty,*.dtx,*.ltx set sw=2 sts=2 |