""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " ██╗ ██╗██╗███╗ ███╗██████╗ ██████╗ " ██║ ██║██║████╗ ████║██╔══██╗██╔════╝ " ██║ ██║██║██╔████╔██║██████╔╝██║ " ╚██╗ ██╔╝██║██║╚██╔╝██║██╔══██╗██║ " ╚████╔╝ ██║██║ ╚═╝ ██║██║ ██║╚██████╗ " ╚═══╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Disable compatibility with vi which can cause unexpected issues. set nocompatible " Enable type file detection. Vim will be able to try to detect the type of file in use. filetype on " Enable plugins and load plugin for the detected file type. filetype plugin on " Load an indent file for the detected file type. filetype indent on " Turn syntax highlighting on. syntax on " Add numbers to each line on the left-hand side. set number " Highlight cursor line underneath the cursor horizontally. set cursorline " Highlight cursor line underneath the cursor vertically. set cursorcolumn " Set shift width to 4 spaces. set shiftwidth=4 " Set tab width to 4 columns. set tabstop=4 " Use space characters instead of tabs. set expandtab " Do not save backup files. set nobackup " Do not let cursor scroll below or above N number of lines when scrolling. set scrolloff=10 " Do not wrap lines. Allow long lines to extend as far as the line goes. set nowrap " While searching though a file incrementally highlight matching characters as you type. set incsearch " Ignore capital letters during search. set ignorecase " Intelligent indent for programming set autoindent set smartindent " Override the ignorecase option if searching for capital letters. " This will allow you to search specifically for capital letters. set smartcase " Show partial command you type in the last line of the screen. set showcmd " Show the mode you are on the last line. set showmode " Show matching words during a search. set showmatch " Use highlighting when doing a search. set hlsearch " Set the commands to save in history default number is 20. set history=1000 " Enable auto completion menu after pressing TAB. set wildmenu " Make wildmenu behave like similar to Bash completion. set wildmode=list:longest " There are certain files that we would never want to edit with Vim. " Wildmenu will ignore files with these extensions. set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx " Permit the recognition of alias by vim set shell=/bin/zsh set shellcmdflag=-ic " PLUGINS ---------------------------------------------------------------- {{{ call plug#begin('~/.vim/plugged') Plug 'dense-analysis/ale' Plug 'preservim/nerdtree' Plug 'chrisbra/vim-commentary' Plug 'vim-airline/vim-airline' Plug 'wfxr/minimap.vim' Plug 'morhetz/gruvbox' call plug#end() " }}} " MAPPINGS --------------------------------------------------------------- {{{ " Set the backslash as the leader key. let mapleader = "," " Press ,, to jump back to the last cursor position. nnoremap , `` " Put a word into double " nnoremap " viwa"bi"lel " Print a ( and it's matching ) inoremap ( ()ha " Print a double " inoremap " ""ha " Open a command block delimited by {} inoremap ' {oo0a}ki " Type jj to exit insert mode quickly. inoremap jj " Press the space bar to type the : character in command mode. nnoremap : " Pressing the letter o will open a new line below the current one. " Exit insert mode after creating a new line above or below the current line. nnoremap o o nnoremap O O " Center the cursor vertically when moving to the next word during a search. nnoremap n nzz nnoremap N Nzz " Yank from cursor to the end of line. nnoremap Y y$ " Map the navigating keys to match the AZERTY keyboard nnoremap j h nnoremap k j nnoremap l k nnoremap m l " Same as the above but in visual mode vnoremap j h vnoremap k j vnoremap l k vnoremap m l " You can split the window in Vim by typing :split or :vsplit. " Navigate the split view easier by pressing CTRL+j, CTRL+k, CTRL+l, or CTRL+m. nnoremap j nnoremap k nnoremap h nnoremap l " Resize split windows using arrow keys by pressing: " CTRL+UP, CTRL+DOWN, CTRL+LEFT, or CTRL+RIGHT. noremap + noremap - noremap > noremap < " Delete a line in normal mode inoremap ddi " NERDTree specific mappings. " Map the F3 key to toggle NERDTree open and close. nnoremap :NERDTreeToggle " Have nerdtree ignore certain files and directories. let NERDTreeIgnore=['\.git$', '\.jpg$', '\.mp4$', '\.ogg$', '\.iso$', '\.pdf$', '\.pyc$', '\.odt$', '\.png$', '\.gif$', '\.db$'] " }}} " VIMSCRIPT -------------------------------------------------------------- {{{ " This will enable code folding. " Use the marker method of folding. augroup filetype_vim autocmd! autocmd FileType vim setlocal foldmethod=marker augroup END " Enable the marker method of folding. augroup filetype_vim autocmd! autocmd FileType vim setlocal foldmethod=marker augroup END " If the current file type is HTML, set indentation to 2 spaces. autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab " If Vim version is equal to or greater than 7.3 enable undofile. " This allows you to undo changes to a file even after saving it. if version >= 703 set undodir=~/.vim/backup set undofile set undoreload=10000 endif " You can split a window into sections by typing `:split` or `:vsplit`. " Display cursorline and cursorcolumn ONLY in active window. augroup cursor_off autocmd! autocmd WinLeave * set nocursorline nocursorcolumn autocmd WinEnter * set cursorline cursorcolumn augroup END " If GUI version of Vim is running set these options. " if has('gui_running') " Set the background tone. " set background=dark " Set the color scheme. " colorscheme wal " Set a custom font you have installed on your computer. " Syntax: set guifont=\ \ " set guifont=Cartograph\ Regular\ 12 " Display more of the file by default. " Hide the toolbar. " set guioptions-=T " Hide the the left-side scroll bar. " set guioptions-=L " Hide the the right-side scroll bar. " set guioptions-=r " Hide the the menu bar. " set guioptions-=m " Hide the the bottom scroll bar. " set guioptions-=b " Map ,m to toggle the menu, toolbar, and scroll bar. " is the pipe character. " is the enter key. " nnoremap m :if &guioptions=~#'mTr' " \set guioptions-=mTr " \else " \set guioptions+=mTr " \endif " endif " gruvbox "Use 24-bit (true-color) mode in Vim/Neovim when outside tmux. "If you're using tmux version 2.2 or later, you can remove the outermost $TMUX check and use tmux's 24-bit color support "(see < http://sunaku.github.io/tmux-24bit-color.html#usage > for more information.) if (empty($TMUX) && getenv('TERM_PROGRAM') != 'Apple_Terminal') if (has("nvim")) "For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 > let $NVIM_TUI_ENABLE_TRUE_COLOR=1 endif "For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 > "Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd > " < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 > if (has("termguicolors")) set termguicolors endif endif let g:airline_powerline_fonts = 1 set background=dark let g:gruvbox_contrast_dark = 'soft' let g:gruvbox_transparent_bg = 1 let g:gruvbox_termcolors=16 colorscheme gruvbox hi! Normal guibg=NONE ctermbg=NONE " }}} " STATUS LINE ------------------------------------------------------------ {{{ " Clear status line when vimrc is reloaded. set statusline= " Status line left side. set statusline+=\ %F\ %M\ %Y\ %R " Use a divider to separate the left side from the right side. set statusline+=%= " Status line right side. set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%% " Show the status on the second to last line. set laststatus=2 " }}}