Created
November 3, 2024 18:13
-
-
Save dendisuhubdy/40847d8681f0bd2e4aee320eb9a209f8 to your computer and use it in GitHub Desktop.
vimrc
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
" Fisa-vim-config | |
" http://fisadev.github.io/fisa-vim-config/ | |
" version: 8.3.1 | |
" ============================================================================ | |
" Vim-plug initialization | |
" Avoid modify this section, unless you are very sure of what you are doing | |
" Vim Tab as 4 Spaces | |
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab | |
let vim_plug_just_installed = 0 | |
let vim_plug_path = expand('~/.vim/autoload/plug.vim') | |
if !filereadable(vim_plug_path) | |
echo "Installing Vim-plug..." | |
echo "" | |
silent !mkdir -p ~/.vim/autoload | |
silent !curl -fLo ~/.vim/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 | |
syntax enable | |
filetype plugin indent on | |
autocmd BufNewFile,BufRead *.rs set filetype=rust | |
call plug#begin('~/.vim/plugged') | |
" vim rust plugin | |
Plug 'rust-lang/rust.vim' | |
" vim solidity plugin | |
Plug 'tomlion/vim-solidity' | |
" with vim-plug | |
" emmet-vim | |
Plug 'mattn/emmet-vim' | |
Plug 'mattn/webapi-vim' | |
Plug 'mattn/vim-gist' | |
Plug 'mattn/vim-maketable' | |
" Solidity | |
Plug 'tomlion/vim-solidity' | |
" UpdateRemotePlugins needed | |
Plug 'gelguy/wilder.nvim' | |
" follow the convention of writing SQL keywords in upper case | |
Plug 'alcesleo/vim-uppercase-sql' | |
" Override configs by directory | |
Plug 'arielrossanigo/dir-configs-override.vim' | |
" Better file browser | |
Plug 'scrooloose/nerdtree' | |
" Code commenter | |
Plug 'scrooloose/nerdcommenter' | |
" Class/module browser | |
Plug 'majutsushi/tagbar' | |
" Code and files fuzzy finder | |
Plug 'ctrlpvim/ctrlp.vim' | |
" Extension to ctrlp, for fuzzy command finder | |
Plug 'fisadev/vim-ctrlp-cmdpalette' | |
" Zen coding | |
Plug 'mattn/emmet-vim' | |
" Git integration | |
Plug 'motemen/git-vim' | |
" Tab list panel | |
Plug 'kien/tabman.vim' | |
" Airline | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
" Terminal Vim with 256 colors colorscheme | |
Plug 'fisadev/fisa-vim-colorscheme' | |
" Consoles as buffers | |
Plug 'rosenfeld/conque-term' | |
" Pending tasks list | |
Plug 'fisadev/FixedTaskList.vim' | |
" Surround | |
Plug 'tpope/vim-surround' | |
" Autoclose | |
Plug 'Townk/vim-autoclose' | |
" Indent text object | |
Plug 'michaeljsmith/vim-indent-object' | |
" Indentation based movements | |
Plug 'jeetsukumaran/vim-indentwise' | |
" Python autocompletion, go to definition. | |
Plug 'davidhalter/jedi-vim' | |
" Better autocompletion | |
"Plug 'Shougo/neocomplcache.vim' | |
"Snippets manager (SnipMate), dependencies, and snippets repo | |
Plug 'MarcWeber/vim-addon-mw-utils' | |
Plug 'tomtom/tlib_vim' | |
Plug 'honza/vim-snippets' | |
"Plug 'garbas/vim-snipmate' | |
"Git/mercurial/others diff icons on the side of the file lines | |
Plug 'mhinz/vim-signify' | |
" Automatically sort python imports | |
"Plug 'fisadev/vim-isort' | |
" Drag visual blocks arround | |
Plug 'fisadev/dragvisuals.vim' | |
" Window chooser | |
Plug 't9md/vim-choosewin' | |
" Python and other languages code checker | |
"Plug 'scrooloose/syntastic' | |
" Paint css colors with the real color | |
Plug 'lilydjwg/colorizer' | |
" Ack code search (requires ack installed in the system) | |
Plug 'mileszs/ack.vim' | |
"Ale | |
Plug 'dense-analysis/ale' | |
"Mypy | |
"Plug 'integralist/vim-mypy' | |
" python-mode | |
" Plug 'klen/python-mode' | |
" Flake8 checks | |
Plug 'nvie/vim-flake8' | |
Plug 'tell-k/vim-autoflake' | |
" Plug autopep8 | |
Plug 'tell-k/vim-autopep8' | |
" Clang formatter | |
Plug 'rhysd/vim-clang-format' | |
" Operator User | |
Plug 'kana/vim-operator-user' | |
" autoformat | |
"Plug 'Chiel92/vim-autoformat' | |
" Yapf | |
Plug 'rizzatti/dash.vim' | |
" Fugitive | |
Plug 'tpope/vim-fugitive' | |
"if has('python') | |
"" YAPF formatter for Python | |
"Plug 'pignacio/vim-yapf-format' | |
"endif | |
" 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' | |
" Plugins from vim-scripts repos: | |
" Search results counter | |
Plug 'vim-scripts/IndexedSearch' | |
" XML/HTML tags navigation | |
Plug 'vim-scripts/matchit.zip' | |
" Gvim colorscheme | |
Plug 'vim-scripts/Wombat' | |
" Yank history navigation | |
Plug 'vim-scripts/YankRing.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 | |
" no vi-compatible | |
set nocompatible | |
" allow plugins by file type (required for plugins!) | |
filetype plugin on | |
filetype indent on | |
" tabs and spaces handling | |
set expandtab | |
set tabstop=4 | |
set softtabstop=4 | |
set shiftwidth=4 | |
" tab length exceptions on some file types | |
autocmd FileType html setlocal shiftwidth=4 tabstop=4 softtabstop=4 | |
autocmd FileType htmldjango setlocal shiftwidth=4 tabstop=4 softtabstop=4 | |
autocmd FileType javascript setlocal shiftwidth=4 tabstop=4 softtabstop=4 | |
" always show status bar | |
set ls=2 | |
" incremental search | |
set incsearch | |
" highlighted search results | |
set hlsearch | |
" syntax highlight on | |
syntax on | |
" show line numbers | |
set nu | |
" tab navigation mappings | |
map tn :tabn<CR> | |
map tp :tabp<CR> | |
map tm :tabm | |
map tt :tabnew | |
map ts :tab split<CR> | |
map <C-S-Right> :tabn<CR> | |
imap <C-S-Right> <ESC>:tabn<CR> | |
map <C-S-Left> :tabp<CR> | |
imap <C-S-Left> <ESC>:tabp<CR> | |
" navigate windows with meta+arrows | |
map <M-Right> <c-w>l | |
map <M-Left> <c-w>h | |
map <M-Up> <c-w>k | |
map <M-Down> <c-w>j | |
imap <M-Right> <ESC><c-w>l | |
imap <M-Left> <ESC><c-w>h | |
imap <M-Up> <ESC><c-w>k | |
imap <M-Down> <ESC><c-w>j | |
" old autocomplete keyboard shortcut | |
imap <C-J> <C-X><C-O> | |
" Comment this line to enable autocompletion preview window | |
" (displays documentation related to the selected completion option) | |
" Disabled by default because preview makes the window flicker | |
" set completeopt-=preview | |
" save as sudo | |
ca w!! w !sudo tee "%" | |
" simple recursive grep | |
nmap ,r :Ack | |
nmap ,wr :Ack <cword><CR> | |
" 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 | |
" colors for gvim | |
if has('gui_running') | |
colorscheme wombat | |
endif | |
" when scrolling, keep cursor 3 lines away from screen border | |
set scrolloff=3 | |
" autocompletion of files and commands behaves like shell | |
" (complete only the common part, list the options that match) | |
set wildmode=list:longest | |
" better backup, swap and undos storage | |
set directory=~/.vim/dirs/tmp " directory to place swap files in | |
set backup " make backup files | |
set backupdir=~/.vim/dirs/backups " where to put backup files | |
set undofile " persistent undos - undo after you re-open the file | |
set undodir=~/.vim/dirs/undos | |
set viminfo+=n~/.vim/dirs/viminfo | |
" store yankring history file there too | |
let g:yankring_history_dir = '~/.vim/dirs/' | |
" create needed directories if they don't exist | |
if !isdirectory(&backupdir) | |
call mkdir(&backupdir, "p") | |
endif | |
if !isdirectory(&directory) | |
call mkdir(&directory, "p") | |
endif | |
if !isdirectory(&undodir) | |
call mkdir(&undodir, "p") | |
endif | |
" ============================================================================ | |
" 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 ----------------------------- | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
" 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$'] | |
" CtrlP ------------------------------ | |
" file finder mapping | |
let g:ctrlp_map = ',e' | |
" tags (symbols) in current file finder mapping | |
nmap ,g :CtrlPBufTag<CR> | |
" tags (symbols) in all files finder mapping | |
nmap ,G :CtrlPBufTagAll<CR> | |
" general code finder in all files mapping | |
nmap ,f :CtrlPLine<CR> | |
" recent files finder mapping | |
nmap ,m :CtrlPMRUFiles<CR> | |
" commands finder mapping | |
nmap ,c :CtrlPCmdPalette<CR> | |
" 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> | |
" don't change working directory | |
let g:ctrlp_working_path_mode = 0 | |
" ignore these files and folders on file finder | |
let g:ctrlp_custom_ignore = { | |
\ 'dir': '\v[\/](\.git|\.hg|\.svn|node_modules)$', | |
\ 'file': '\.pyc$\|\.pyo$', | |
\ } | |
" Syntastic ------------------------------ | |
" show list of errors and warnings on the current file | |
nmap <leader>e :Errors<CR> | |
" check also when just opened the file | |
let g:syntastic_check_on_open = 1 | |
" don't put icons on the sign column (it hides the vcs status icons of signify) | |
let g:syntastic_enable_signs = 0 | |
" custom icons (enable them if you use a patched font, and enable the previous | |
" setting) | |
let g:syntastic_error_symbol = '✗' | |
let g:syntastic_warning_symbol = '⚠' | |
let g:syntastic_style_error_symbol = '✗' | |
let g:syntastic_style_warning_symbol = '⚠' | |
let g:syntastic_cpp_compiler = 'clang++' | |
let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++' | |
" Syntastic settings | |
" You can run checkers explicitly by calling :SyntasticCheck <checker | |
let g:syntastic_python_checkers = ['flake8'] | |
"use one of the following checkers: | |
" flake8, pyflakes, pylint, python (native checker) | |
let g:syntastic_enable_highlighting = 1 "highlight errors and warnings | |
let g:syntastic_style_error_symbol = ">>" "error symbol | |
let g:syntastic_warning_symbol = ">>" "warning symbol | |
let g:syntastic_check_on_open = 1 | |
let g:syntastic_auto_jump = 0 "do not jump to errors when detected | |
set statusline+=%{SyntasticStatuslineFlag()} | |
" Jedi-vim ------------------------------ | |
" All these mappings work only for python code: | |
" Autoinitialization | |
let g:jedi#auto_initialization = 1 | |
" Use tabs | |
let g:jedi#use_tabs_not_buffers = 1 | |
" Splits for definition | |
let g:jedi#use_splits_not_buffers = "left" | |
" don't popup select first, annoying | |
let g:jedi#popup_select_first = 0 | |
" Popup on dot | |
let g:jedi#popup_on_dot = 1 | |
" 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> | |
" NeoComplCache ------------------------------ | |
" most of them not documented because I'm not sure how they work | |
" (docs aren't good, had to do a lot of trial and error to make | |
" it play nice) | |
let g:neocomplcache_enable_at_startup = 1 | |
let g:neocomplcache_enable_ignore_case = 1 | |
let g:neocomplcache_enable_smart_case = 1 | |
let g:neocomplcache_enable_auto_select = 1 | |
let g:neocomplcache_enable_fuzzy_completion = 1 | |
let g:neocomplcache_enable_camel_case_completion = 1 | |
let g:neocomplcache_enable_underbar_completion = 1 | |
let g:neocomplcache_fuzzy_completion_start_length = 1 | |
let g:neocomplcache_auto_completion_start_length = 1 | |
let g:neocomplcache_manual_completion_start_length = 1 | |
let g:neocomplcache_min_keyword_length = 1 | |
let g:neocomplcache_min_syntax_length = 1 | |
" complete with workds from any opened file | |
let g:neocomplcache_same_filetype_lists = {} | |
let g:neocomplcache_same_filetype_lists._ = '_' | |
" TabMan ------------------------------ | |
" mappings to toggle display, and to focus on it | |
let g:tabman_toggle = 'tl' | |
let g:tabman_focus = 'tf' | |
" Autoclose ------------------------------ | |
" Fix to let ESC work as espected with Autoclose plugin | |
let g:AutoClosePumvisible = {"ENTER": "\<C-Y>", "ESC": "\<ESC>"} | |
" DragVisuals ------------------------------ | |
" mappings to move blocks in 4 directions | |
vmap <expr> <S-M-LEFT> DVB_Drag('left') | |
vmap <expr> <S-M-RIGHT> DVB_Drag('right') | |
vmap <expr> <S-M-DOWN> DVB_Drag('down') | |
vmap <expr> <S-M-UP> DVB_Drag('up') | |
" mapping to duplicate block | |
vmap <expr> D DVB_Duplicate() | |
" 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 | |
" Window Chooser ------------------------------ | |
" mapping | |
nmap - <Plug>(choosewin) | |
" show big letters | |
let g:choosewin_overlay_enable = 1 | |
" 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 the README.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 backspace=2 | |
set backspace=indent,eol,start | |
let g:pymode_python = 'python3' | |
" Flake8 ----------------------------------------------- | |
let g:flake8_show_in_gutter=1 " show | |
let g:flake8_show_in_file=1 " show | |
" autocmd BufWritePost *.py call Flake8() | |
let g:clang_format#style_options = { | |
\ "AccessModifierOffset" : -4, | |
\ "AllowShortIfStatementsOnASingleLine" : "true", | |
\ "AlwaysBreakTemplateDeclarations" : "true", | |
\ "Standard" : "C++11"} | |
" map to <Leader>cf in C++ code | |
autocmd FileType c,cpp,objc nnoremap <buffer><Leader>cf :<C-u>ClangFormat<CR> | |
autocmd FileType c,cpp,objc vnoremap <buffer><Leader>cf :ClangFormat<CR> | |
" if you install vim-operator-user | |
autocmd FileType c,cpp,objc map <buffer><Leader>x <Plug>(operator-clang-format) | |
" Toggle auto formatting: | |
nmap <Leader>C :ClangFormatAutoToggle<CR> | |
autocmd FileType c ClangFormatAutoEnable | |
"let g:formatter_yapf_style = 'pep8' | |
"autocmd FileType python noremap <buffer> <F8> :call Autopep8()<CR> | |
" Automatically fix PEP8 errors in the current buffer: | |
noremap <F8> :PymodeLintAuto<CR> | |
" | |
" nasm | |
autocmd BufNewFile,BufRead *.asm set filetype=nasm | |
" commenting | |
" Commenting blocks of code. | |
autocmd FileType c,cpp,java,scala let b:comment_leader = '// ' | |
autocmd FileType sh,ruby,python let b:comment_leader = '# ' | |
autocmd FileType conf,fstab let b:comment_leader = '# ' | |
autocmd FileType tex let b:comment_leader = '% ' | |
autocmd FileType mail let b:comment_leader = '> ' | |
autocmd FileType vim let b:comment_leader = '" ' | |
noremap <silent> ,cc :<C-B>silent <C-E>s/^/<C-R>=escape(b:comment_leader,'\/')<CR>/<CR>:nohlsearch<CR> | |
noremap <silent> ,cu :<C-B>silent <C-E>s/^\V<C-R>=escape(b:comment_leader,'\/')<CR>//e<CR>:nohlsearch<CR> | |
"call wilder#enable_cmdline_enter() | |
"set wildcharm=<Tab> | |
"cmap <expr> <Tab> wilder#in_context() ? wilder#next() : "\<Tab>" | |
"cmap <expr> <S-Tab> wilder#in_context() ? wilder#previous() : "\<S-Tab>" | |
" only / and ? is enabled by default | |
"call wilder#set_option('modes', ['/', '?', ':']) | |
" As-you-type autocomplete | |
set completeopt=menu,menuone,preview,noselect,noinsert | |
let g:ale_completion_enabled = 1 | |
" Required, explicitly enable Elixir LS | |
let g:ale_linters = {'rust': ['analyzer']} | |
let g:ale_fixers = { 'rust': ['rustfmt', 'trim_whitespace', 'remove_trailing_lines'] } | |
nnoremap <C-LeftMouse> :ALEGoToDefinition<CR> | |
let g:rustfmt_autosave = 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment