summaryrefslogtreecommitdiff
path: root/nvim/init.vim
diff options
context:
space:
mode:
authorTimmy Keller <tjk@tjkeller.xyz>2021-07-07 15:21:45 -0500
committerTimmy Keller <tjk@tjkeller.xyz>2021-07-07 15:21:45 -0500
commit3764b268dbeaa95a8d4b2da8d4433eab75ad8478 (patch)
tree7c0db4481dfa7c4369f3db355056703cbe442072 /nvim/init.vim
downloaddotconfig-3764b268dbeaa95a8d4b2da8d4433eab75ad8478.tar.xz
dotconfig-3764b268dbeaa95a8d4b2da8d4433eab75ad8478.zip
dotfiles
Diffstat (limited to 'nvim/init.vim')
-rwxr-xr-xnvim/init.vim88
1 files changed, 88 insertions, 0 deletions
diff --git a/nvim/init.vim b/nvim/init.vim
new file mode 100755
index 0000000..5cdb9b7
--- /dev/null
+++ b/nvim/init.vim
@@ -0,0 +1,88 @@
+" Manage plugins using vim-plug
+if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"'))
+ echo "Downloading junegunn/vim-plug to manage plugins..."
+ silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/
+ silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim
+ autocmd VimEnter * PlugInstall
+endif
+
+call plug#begin(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/plugged"'))
+Plug 'chrisbra/Colorizer'
+Plug 'junegunn/goyo.vim'
+Plug 'jiangmiao/auto-pairs'
+call plug#end()
+
+" Basic options
+syntax on " Enable syntax highlighting
+set number relativenumber " Enable relative line numbers
+set linebreak " Word wrap
+set wildmode=longest,list,full " Enable file auto-complete
+set splitbelow splitright " Open splits on bottom/right instead of top/left
+set hlsearch " Highlight search hits
+set ignorecase " Case-insensitive search...
+set smartcase " ...Unless the search term is capital
+set autoindent " Keeps indentation on new lines
+set mouse=a " Because sometimes it's just easier to use the mouse
+set autochdir " Always change directory to current file
+set cursorline " Highlight current line
+
+" Keybindings
+ " Set leader-key to comma
+let mapleader =","
+ " Invoke goyo with comma-m
+map <leader>m :Goyo<CR>
+ " Invoke spellcheck mode with comma-o
+map <leader>l :setlocal spell! spelllang=en_us<CR>
+ " Invoke spellcheck mode with comma-o
+map <leader>c :set cursorcolumn!<CR>
+ " Send cursor to top or bottom currently visible line with ctrl-jk
+" map <C-j> :call cursor(line('w$'),col('.'))<CR>
+" map <C-k> :call cursor(line('w0'),col('.'))<CR>
+map <C-j> <C-d>
+map <C-k> <C-u>
+map <C-h> 0
+map <C-l> $
+ " Faster split navigation (alt-hjlk, as opposed to ctrl-w + hjlk)
+map <A-h> <C-w>h
+map <A-j> <C-w>j
+map <A-k> <C-w>k
+map <A-l> <C-w>l
+
+" Colorscheme for root and normal users (since vimrc is just symlinked to the root user's home)
+if ($HOME) == '/root'
+ colorscheme zellner
+else
+ set bg=dark
+ let g:gruvbox_contrast_dark = 'hard'
+ colorscheme gruvbox-timmy
+endif
+
+" Behavior's exclusive to either the tty or a terminal emulator in a graphical environment
+if empty($DISPLAY)
+ " Then clear the tty screen after exiting vim
+ autocmd VimLeave * :!clear
+else
+ " Change the terminal emulator's window title and class name to vim
+ autocmd BufEnter * :set title
+ autocmd VimEnter * :silent exec "!~/Scripts/st/settitle Vim"
+ autocmd VimLeave * :silent exec "!~/Scripts/st/settitle st"
+ let &titleold="st"
+endif
+
+" Set the cursor on a per-mode basis
+let &t_SI.="\<Esc>[6 q" " Insert mode
+let &t_SR.="\<Esc>[4 q" " Replace mode
+let &t_EI.="\<Esc>[2 q" " Normal mode
+let &t_ti.="\<Esc>[2 q" " Cursor on startup
+
+" Automatically deletes all trailing whitespace and newlines at end of file on save
+autocmd BufWritePre * let ccc=col('.') " Set current cursor column
+autocmd BufWritePre * let ccl=line('.') " Set current cursor line
+autocmd BufWritePre * %s/\s\+$//e " \/
+autocmd BufWritePre * %s/\n\+\%$//e " Remove white space
+autocmd BufWritePre *.[ch] %s/\%$/\r/e " /\
+autocmd BufWritePre * call cursor(ccl,ccc) " Move cursor to previous position
+
+" Get rid of the pointless .viminfo files that clutter the home directory
+let skip_defaults_vim=1
+set viminfo=""