diff --git a/vimrc b/vimrc new file mode 100644 index 0000000..0ae7b28 --- /dev/null +++ b/vimrc @@ -0,0 +1,310 @@ +" 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 is 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 the file. +set relativenumber +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 + +" 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 + +set encoding=utf-8 +" PLUGINS ---------------------------------------------------------------- {{{ + +call plug#begin('~/.vim/plugged') + + Plug 'dense-analysis/ale' + + Plug 'preservim/nerdtree' + + Plug 'vim-airline/vim-airline' + + Plug 'jiangmiao/auto-pairs' + + Plug 'neoclide/coc.nvim' + + Plug 'arcticicestudio/nord-vim' + + Plug 'dracula/vim' + + Plug 'chriskempson/base16-vim' + + Plug 'vim-airline/vim-airline-themes' + + Plug 'rhysd/accelerated-jk' + +call plug#end() + +inoremap + \ coc#pum#visible() ? coc#pum#next(1) : + \ CheckBackspace() ? "\" : + \ coc#refresh() +inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" + +" Make to accept selected completion item or notify coc.nvim to format +" u breaks current undo, please make your own choice. +inoremap coc#pum#visible() ? coc#pum#confirm() + \: "\u\\=coc#on_enter()\" + +function! CheckBackspace() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + +" Use to trigger completion. +if has('nvim') + inoremap coc#refresh() +else + inoremap coc#refresh() +endif + +set background=dark +"colorscheme dracula +"colorscheme nord + +set termguicolors +colorscheme base16-solarized-dark +nmap j (accelerated_jk_gj) +nmap k (accelerated_jk_gk) + +"Fonts for the Status Line +let g:airline_powerline_fonts = 1 + +if !exists('g:airline_symbols') + let g:airline_symbols = {} +endif + +"Unicode symbols for the Status Line +let g:airline_left_alt_sep = '»' +let g:airline_left_sep = '▶' +let g:airline_right_alt_sep = '«' +let g:airline_right_sep = '◀' +let g:airline_symbols.linenr = '␊' +let g:airline_symbols.branch = '⎇' +let g:airline_symbols.paste = 'ρ' +let g:airline_symbols.readonly = '∥' +let g:airline_symbols.whitespace = 'Ξ' + +"let base16colorspace=256 + +" }}} + +" MAPPINGS --------------------------------------------------------------- {{{ + +" Set the backslash as the leader key. +let mapleader = "\\" + +" Press \\ to jump back to the last cursor position. +nnoremap \ `` + +" Press \p to print the current file to the default printer from a Linux operating system. +" View available printers: lpstat -v +" Set default printer: lpoptions -d +" means do not display output. +nnoremap p :%w !lp + +" 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 F5 key to run a Python script inside Vim. +" We map F5 to a chain of commands here. +" :w saves the file. +" (carriage return) is like pressing the enter key. +" !clear runs the external clear screen command. +" !python3 % executes the current file with Python. +nnoremap :w :!clear :!python3 % + +" You can split the window in Vim by typing :split or :vsplit. +" Navigate the split view easier by pressing CTRL+j, CTRL+k, CTRL+h, or CTRL+l. +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 < + +" 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 -------------------------------------------------------------- {{{ + +" 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 molokai + + " Set a custom font you have installed on your computer. + " Syntax: \ \ + set guifont=Monospace\ 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 left-side scroll bar. + set guioptions-=r + + " Hide the the menu bar. + set guioptions-=m + + " Hide the the bottom scroll bar. + set guioptions-=b + + " Map the F4 key to toggle the menu, toolbar, and scroll bar. + " is the pipe character. + " is the enter key. + nnoremap :if &guioptions=~#'mTr' + \set guioptions-=mTr + \else + \set guioptions+=mTr + \endif + +endif + +" }}} + +" 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 + +" }}} +