diff --git a/dot_config/nvim/init.vim b/dot_config/nvim/init.vim new file mode 100644 index 0000000..ab60b04 --- /dev/null +++ b/dot_config/nvim/init.vim @@ -0,0 +1,134 @@ +call plug#begin('~/.config/nvim/autoload/plugged') +Plug 'junegunn/vim-easy-align' +Plug 'w0rp/ale' +Plug 'tpope/vim-rails' +Plug 'vim-ruby/vim-ruby' +Plug 'hashivim/vim-terraform' +Plug 'cespare/vim-toml' +Plug 'ntpeters/vim-better-whitespace' +Plug 'pearofducks/ansible-vim' +Plug 'itchyny/vim-gitbranch' +Plug 'rust-lang/rust.vim' +Plug 'airblade/vim-gitgutter' +Plug 'elixir-editors/vim-elixir' +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +Plug 'junegunn/fzf.vim' +Plug 'https://tpope.io/vim/fugitive.git' +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' +Plug 'kyazdani42/nvim-web-devicons' +Plug 'kyazdani42/nvim-tree.lua' +Plug 'svermeulen/vimpeccable' +call plug#end() + +set nocompatible +set history=1000 +set title +set encoding=utf-8 +set scrolloff=3 +set ttyfast +set laststatus=2 +set ff=unix +set number +set tabstop=2 +set shiftwidth=2 +set softtabstop=2 +set nojoinspaces +set expandtab +set listchars=tab:>-,trail:- +set list +set noshowmode +set hlsearch +set incsearch +set termguicolors +set visualbell +set noerrorbells +set whichwrap=<,>,[,],b, +set background=dark +set backspace=indent,eol,start +set number +set autoread +" set mouse=a +set nobackup +set nowb +set noswapfile +syntax on +let mapleader = " " + +syntax on +filetype on +filetype plugin on +filetype plugin indent on +autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0 +autocmd FileType rust set shiftwidth=4 softtabstop=4 tabstop=4 +autocmd FileType terraform set expandtab +let g:rustfmt_autosave = 1 +autocmd FileType html set shiftwidth=4 softtabstop=4 tabstop=4 +autocmd FileType javascript set shiftwidth=4 softtabstop=4 tabstop=4 +autocmd FileType htmldjango set shiftwidth=4 softtabstop=4 tabstop=4 +autocmd BufNewFile,BufRead *.tera set syntax=django + +" Center screen when scrolling search results +nmap n nzz +nmap N Nzz + +let g:airline_powerline_fonts=1 +let g:airline_theme='base16_eighties' +let g:airline#extensions#tabline#enabled = 1 +noremap :bp +noremap :bn + +set pastetoggle= + +" highlight trailing whitespace +highlight ExtraWhitespace ctermbg=red guibg=red +match ExtraWhitespace /\s\+$/ +autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ +autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@(EasyAlign) + +" Start interactive EasyAlign for a motion/text object (e.g. gaip) +nmap ga (EasyAlign) + +nnoremap 1 :source ~/.config/nvim/init.vim \| :PlugInstall +map s :StripWhitespace + +nnoremap g :Rg +nnoremap l :Buffers + +nnoremap :call SetNewPassword() +function! SetNewPassword() + let cur_word = expand('') + let cmd = 'pwgen ' . strlen(cur_word) . ' 1' + let new_password = system(cmd)[:-2] + " Replace current word with a new random password of the same length + call setline(line('.'), substitute(getline('.'), cur_word, new_password, "")) +endfunction + +" Relative numbering +function! NumberToggle() + if(&relativenumber == 1) + set nornu + set number + else + set rnu + endif +endfunc + +" Toggle between normal and relative numbering. +noremap :call NumberToggle() + +" File Browser +nnoremap :NvimTreeToggle +nnoremap r :NvimTreeRefresh +nnoremap n :NvimTreeFindFile +let g:nvim_tree_auto_close = 1 +" let g:nvim_tree_quit_on_open = 1 +let g:nvim_tree_git_hl = 1