From 9e9e304d75a35f982874d1be0fa1a1c23523f4d4 Mon Sep 17 00:00:00 2001 From: zachir Date: Wed, 5 Jun 2024 20:01:53 -0500 Subject: Add in vimrc to fix xdg and nvim This adds the vimrc, both for its own sake, but also to fix nvim (which gets enjankified by the xdg fix for vim proper). --- .gitignore | 2 +- vim/vimrc | 306 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 vim/vimrc diff --git a/.gitignore b/.gitignore index 3961168..aa9c29a 100644 --- a/.gitignore +++ b/.gitignore @@ -252,7 +252,7 @@ unity3d/ Valve Corporation/ vdirsyncer/ VeraCrypt/ -vim/ +vim/* !vim/vimrc VirtualBox/ vlc/vlc-qt-interface.conf diff --git a/vim/vimrc b/vim/vimrc new file mode 100644 index 0000000..6b64279 --- /dev/null +++ b/vim/vimrc @@ -0,0 +1,306 @@ +set runtimepath^=$XDG_CONFIG_HOME/vim +set runtimepath+=$XDG_DATA_HOME/vim +set runtimepath+=$XDG_CONFIG_HOME/vim/after + +set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim +set packpath+=$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/after + +let g:netrw_home = $XDG_DATA_HOME."/vim" +call mkdir($XDG_DATA_HOME."/vim/spell", 'p') + +set backupdir=$XDG_STATE_HOME/vim/backup | call mkdir(&backupdir, 'p') +set directory=$XDG_STATE_HOME/vim/swap | call mkdir(&directory, 'p') +set undodir=$XDG_STATE_HOME/vim/undo | call mkdir(&undodir, 'p') +set viewdir=$XDG_STATE_HOME/vim/view | call mkdir(&viewdir, 'p') + +if !has('nvim') | set viminfofile=$XDG_STATE_HOME/vim/viminfo | endif + +" vimplugs {{{ +call plug#begin('~/.config/nvim/plugged') +" colorschemes {{{ +Plug 'tomasiser/vim-code-dark' " codedark color scheme +Plug 'flazz/vim-colorschemes' " meta-color scheme package +Plug 'tomasiser/vim-code-dark' " codedark color scheme +Plug 'flazz/vim-colorschemes' " meta-color scheme package +Plug 'ZachIndigo/vim-preglow' " my old color scheme +" }}} +" language support {{{ +Plug 'axvr/org.vim' " basic org markup language implementation +Plug 'ziglang/zig.vim' " zig programming language +Plug 'jdonaldson/vaxe' " haxe programming language +Plug 'xuhdev/vim-latex-live-preview', { 'for': 'tex' } " latex live preview support +Plug 'waycrate/swhkd-vim' " swhkd syntax highlighting +Plug 'HiPhish/guile.vim' " guile syntax highlighting +" }}} +" utility {{{ +Plug 'preservim/nerdtree' " directory tree interface +Plug 'Xuyuanp/nerdtree-git-plugin' " git status indicator for nerdtree +Plug 'PhilRunninger/nerdtree-visual-selection' " allows visual selection mode in nerdtree +Plug 'tpope/vim-fugitive' " git command interface +Plug 'junegunn/goyo.vim' " simplify the user interface (distraction-free) [BROKEN] +Plug 'junegunn/limelight.vim' " focus on single paragraph of text at a time +Plug 'vim-airline/vim-airline' " powerline the vim bottom bar +Plug 'nathanaelkane/vim-indent-guides' " indent guides for vim +Plug 'mhinz/vim-signify' " use signs to show diffs +Plug 'tpope/vim-endwise' " auto end functions/if statements +Plug 'tpope/vim-surround' " auto close stuff +Plug 'mattn/emmet-vim' " html css easy formating +Plug 'godlygeek/tabular' " Needed for vim-markdown +Plug 'plasticboy/vim-markdown' " Better markdown support +Plug 'ryanoasis/vim-devicons' " dev icons for nerdtree +" }}} +call plug#end() + +" }}} +" nvim options {{{ + +"" nvimrc: +"" General + +set showmatch " Highlight matching brace + +set number +set relativenumber + +colorscheme 256-grayvim + +set hlsearch " Highlight all search results +set smartcase " Enable smart-case search +set incsearch " Searches for strings incrementally + +set expandtab " Use spaces instead of tabs +set shiftwidth=2 " Number of auto-indent spaces +set smartindent " Enable smart-indent +set smarttab " Enable smart-tabs +set softtabstop=2 " Number of spaces per Tab + +"" Advanced +set ruler " Show row and column ruler information +set undolevels=1000 " Number of undo levels +set backspace=indent,eol,start " Backspace behaviour +filetype plugin indent on + +"" GUI Config +set guifont=mononoki\ Nerd\ Font\ Mono:h12 + +"hi Normal guibg=NONE ctermbg=NONE +"hi NonText guibg=NONE ctermbg=NONE +"set background=dark + +set foldmethod=marker + +set conceallevel=2 + +" set leader key + +let mapleader="'" + +" emmet {{{ +let g:user_emmet_leader_key='' +" }}} + +" zig config {{{ +let g:zig_fmt_autosave = 1 +" }}} + +" latex live preview {{{ +let g:livepreview_previewer = 'zathura' +let g:livepreview_use_biber = 1 +let g:livepreview_cursorhold_recompile = 0 +" }}} + +" vim-markdown {{{ +let g:vim_markdown_folding_disabled = 1 +let g:vim_markdown_folding_level = 3 +let g:vim_markdown_toc_autofit = 1 +let g:vim_markdown_emphasis_multiline = 0 +let g:tex_conceal = "" +let g:vim_markdown_math = 1 +let g:vim_markdown_conceal_code_blocks = 1 +let g:vim_markdown_fenced_languages = ['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini'] +let g:vim_markdown_follow_anchor = 1 +let g:vim_markdown_math = 1 +let g:vim_markdown_frontmatter = 1 +let g:vim_markdown_toml_frontmatter = 1 +let g:vim_markdown_strikethrough = 1 +let g:vim_markdown_no_extensions_in_markdown = 1 +let g:vim_markdown_autowrite = 1 +let g:vim_markdown_auto_insert_bullets = 0 +let g:vim_markdown_new_list_item_indent = 0 +let g:vim_markdown_edit_url_in = 'tab' +" }}} + +" NERDTree config {{{ +let g:NERDTreeGitStatusUseNerdFonts = 1 " use nerd fonts +let g:NERDTreeGitStatusShowClean = 1 " default: 0 +let g:NERDTreeDirArrowExpandable = '>' +let g:NERDTreeDirArrowCollapsible = '<' +let g:NERDTreeMapToggleHidden = 'z' +" }}} + +" Goyo config {{{ +let g:goyo_width = '90%' +let g:goyo_height = '100%' +" }}} + +" limelight config {{{ +let g:limelight_conceal_ctermfg = 'gray' +let g:limelight_conceal_guifg = 'gray' +" }}} + +" devicon config {{{ +let g:airline_powerline_fonts = 1 +let g:webdevicons_enable_nerdtree = 1 +" }}} + +" vim-indent-guides config {{{ +let g:indent_guides_enable_on_vim_startup = 0 +" }}} + +" vim-signify config {{{ +set updatetime=100 +" }}} + +" }}} +" Functions {{{ +" Goyo functions {{{ +function! s:goyo_enter() + if executable('tmux') && strlen($TMUX) + silent !tmux set status off + silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z + endif + set noshowmode + set noshowcmd + set scrolloff=999 + Limelight + NERDTreeClose +endfunction +function! s:goyo_leave() + if executable('tmux') && strlen('$TMUX') + silent !tmux set status on + silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z + endif + set showmode + set showcmd + set scrolloff=5 + Limelight! + NERDTree +endfunction +" }}} +" }}} +" Autocommands {{{ +" Goyo autocommands {{{ +autocmd! User GoyoEnter nested call goyo_enter() +autocmd! User GoyoLeave nested call goyo_leave() +" }}} +" NERDTree autocmds {{{ +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 0 && !exists('s:std_in') | NERDTree | wincmd p | endif +autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') | + \ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif +autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif +autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif +"autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 | + "\ let buf=bufnr() | buffer# | execute "normal! \w" | execute 'buffer;.buf | endif +autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif +" }}} +" custom augroup {{{ +augroup custom + autocmd! + au BufEnter *.tex :LLPStartPreview + au BufEnter *.md :set textwidth=80 + au BufEnter *.ms :set textwidth=80 + "au BufEnter *.c :colo DevC++ + "au BufEnter *.h :colo DevC++ + "au BufEnter *.cc :colo DevC++ + "au BufEnter *.hh :colo DevC++ + "au BufEnter *.cpp :colo DevC++ + "au BufEnter *.hpp :colo DevC++ + au BufWritePost init.vim :source % + au BufWritePost *.tex :make + au BufWritePost *sxhkdrc* :!pkill -USR1 -x sxhkd + au BufWritePost .Xresources :!xrdb ~/.Xresources + au BufWritePost .gitignore :!git add .gitignore +augroup end +" }}} +" }}} +" keybindings {{{ + +" direction keys + +inoremap gj +inoremap gk +inoremap g +inoremap g +vnoremap gj +vnoremap gk +vnoremap g +vnoremap g +nnoremap gj +nnoremap gk + +" clear search highlights +nnoremap / :noh + +" toggles +nnoremap tn :set number! +nnoremap tr :set relativenumber! +nnoremap tt :NERDTreeToggle + +" tabs +nnoremap th :tabprevious +nnoremap tl :tabnext +nnoremap tk :tabnew +nnoremap tj :tabclose + +" splits +nnoremap wh :vertical resize -1 +nnoremap wj :resize -1 +nnoremap wk :resize +1 +nnoremap wl :vertical resize +1 + +" config +nnoremap en :e ~/.config/nvim/init.vim +nnoremap ec :source % + +" write as root +nnoremap ZW :w !pkexec tee % >/dev/null + +" Goyo +nnoremap G :Goyo + +" windows +nnoremap h +nnoremap j +nnoremap k +nnoremap l +vnoremap h +vnoremap j +vnoremap k +vnoremap l + +" files +" these may go away soon +nnoremap xx :q +nnoremap x! :q! +" these are the new standard +nnoremap qq :q +nnoremap q! :q! +nnoremap wq :wq +nnoremap ww :w +nnoremap ee :e + +" escape for term windows +tnoremap + +" vim-plug +nnoremap pi :PlugInstall +nnoremap pu :PlugUpdate +nnoremap pU :PlugUpgrade +nnoremap pc :PlugClean + +" fugitive +nnoremap gp :G pull +nnoremap gd :G diff % + +" }}} -- cgit v1.2.3