From 8531f059df0e3df7b8258d63927748d385ed120f Mon Sep 17 00:00:00 2001 From: Daniel Thoren Date: Wed, 2 Aug 2023 10:13:21 +0200 Subject: [PATCH] :fire: / :art: simplify + customize netrw get inspired: https://shapeshed.com/vim-netrw/ --- .config/nvim/init.vim | 235 ++++-------------------------------------- 1 file changed, 19 insertions(+), 216 deletions(-) diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index cb1eb98..fb48079 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -1,143 +1,39 @@ let mapleader ="," -" set termguicolors - -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 'tpope/vim-surround' " surround for parentheses, brackets, quotes, XML tags etc -Plug 'tpope/vim-fugitive' " git helper -Plug 'preservim/nerdtree' " file tree -Plug 'jreybert/vimagit' " git diffing with :Magit -Plug 'lukesmithxyz/vimling' " toggle deadkeys, IPA, prose-mode -Plug 'junegunn/goyo.vim' " prose mode but better -Plug 'vimwiki/vimwiki' " take notes in vimwiki -Plug 'michal-h21/vimwiki-sync' " sync notes to git repo -Plug 'itchyny/calendar.vim' " integrate calendar into vimwiki (todo) -Plug 'vim-airline/vim-airline' " status bar -Plug 'tpope/vim-commentary' " comment out word / line with 'gc' -Plug 'ap/vim-css-color' " show css colors -Plug 'editorconfig/editorconfig-vim' " editor-config extension for vim -Plug 'scrooloose/syntastic' " syntax checker -" Plug 'airblade/vim-gitgutter' " show git diff insertions / deletions -" Plug 'junegunn/vim-emoji' " emoji autocomplete + emojis in gitgutter -Plug 'rrethy/vim-illuminate' " highlight other uses of the current word under the cursor -" Plug 'jupyter-vim/jupyter-vim' " one day we'll start using jupyter in vim -Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " fuzzy-finder -Plug 'ibhagwan/fzf-lua', {'branch': 'main'} -" optional for icon support -Plug 'kyazdani42/nvim-web-devicons' -" for nvim nirvana -Plug 'hkupty/iron.nvim' " connect to REPLs (i.e. ipython) -Plug 'kana/vim-textobj-user' -Plug 'kana/vim-textobj-line' -Plug 'GCBallesteros/vim-textobj-hydrogen' -Plug 'GCBallesteros/jupytext.vim' -call plug#end() - - " show invisibles set fileencoding=utf-8 set list set listchars=tab:→\ ,nbsp:␣,trail:•,precedes:«,extends:» -" vim-emoji setup -" set completefunc=emoji#complete -" let g:gitgutter_sign_added = emoji#for('small_blue_diamond') -" let g:gitgutter_sign_modified = emoji#for('small_orange_diamond') -" let g:gitgutter_sign_removed = emoji#for('small_red_triangle') -" let g:gitgutter_sign_modified_removed = emoji#for('collision') - - -" syntastic recommended settings -set statusline+=%#warningmsg# -set statusline+=%{SyntasticStatuslineFlag()} -set statusline+=%* -let g:syntastic_always_populate_loc_list = 1 -let g:syntastic_auto_loc_list = 1 -let g:syntastic_check_on_open = 1 -let g:syntastic_check_on_wq = 0 -let g:syntastic_python_checkers = ['python', 'flake8'] -let g:syntastic_python_python_exec = 'python3' -let g:syntastic_rst_checkers=['sphinx'] - -" nvim nirvana -" Jupytext -let g:jupytext_fmt = 'py' -let g:jupytext_style = 'hydrogen' -" Send cell to IronRepl and move to next cell. -" Depends on the text object defined in vim-textobj-hydrogen -" You first need to be connected to IronRepl -nmap ]x ctrih/^# %% -luafile $HOME/.config/nvim/plugins.lua - -" fzf in nvim -set rtp+=/home/linuxbrew/.linuxbrew/opt/fzf - -" python stuff -" let g:python3_host_prog = "$HOME/.venvs/nvim/bin/python" -let g:python4_host_prog = "$HOME/.config/nvim/python" - -" VimWiki setup -let g:vimwiki_sync_branch = "main" -let g:vimwiki_sync_commit_message = 'vimwiki: $USER @ $HOST' -let g:sync_taskwarrior = 0 -let g:vimwiki_markdown_link_ext = 1 " explicitly add .md extension in vimwiki - -let wiki_1 = {} -let wiki_1.name = 'vimwiki_private' -let wiki_1.path = '~/vimwiki/' -let wiki_1.syntax = 'markdown' -let wiki_1.ext = 'md' -let wiki_1.automatic_nested_syntaxes = 1 - -let wiki_2 = {} -let wiki_2.name = 'methodology_public' -let wiki_2.path = '~/methodology/' -let wiki_2.syntax = 'markdown' -let wiki_2.ext = 'md' -let wiki_2.automatic_nested_syntaxes = 1 - -let wiki_3 = {} -let wiki_3.name = 'taiga_admin_private' -let wiki_3.path = '~/administration/' -let wiki_3.syntax = 'markdown' -let wiki_3.ext = 'md' -let wiki_3.automatic_nested_syntaxes = 1 - -let wiki_4 = {} -let wiki_4.name = 'dotfiles_public' -let wiki_4.path = '~/dotfiles/' -let wiki_4.syntax = 'markdown' -let wiki_4.ext = 'md' -let wiki_4.automatic_nested_syntaxes = 1 - -let g:vimwiki_list = [wiki_1, wiki_2, wiki_3, wiki_4] - " calendar setup let g:calendar_first_day = 'monday' " set monday as first day of week let g:calendar_week_number = 1 " add weeknumber -" open new tab with tu - inspired by theniceboy/nvim -noremap tu :tabe -noremap tU :tab split - " configs below are from LukeSmithxyz/LARBS set title set bg=light set go=a set mouse=a set nohlsearch + +" clipboard + file name/path yanking set clipboard+=unnamedplus -set noshowmode -set noruler -set laststatus=0 -set noshowcmd +" yank file name +nmap yf :let @+ = expand("%") +" yank file full path +nmap yp :let @+ = expand("%:p") + + +" relative line numbering when leaving insert mode +set relativenumber +autocmd InsertEnter * :set number norelativenumber +autocmd InsertLeave * :set nonumber relativenumber + +" netrw (dir listing) settings +let g:netrw_liststyle = 3 +let g:netrw_banner = 0 +let g:netrw_browse_split = 3 +let g:netrw_winsize = 25 " % of page " Some basics: nnoremap c "_c @@ -145,78 +41,25 @@ set noshowcmd filetype plugin on syntax on set encoding=utf-8 - set number relativenumber " Enable autocompletion: set wildmode=longest,list,full " Disables automatic commenting on newline: autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o " Perform dot commands over visual blocks: vnoremap . :normal . -" Goyo plugin makes text more readable when writing prose: - map f :Goyo \| set bg=light \| set linebreak " Spell-check set to o, 'o' for 'orthography': map o :setlocal spell! spelllang=en_us " Splits open at the bottom and right, which is non-retarded, unlike vim defaults. set splitbelow splitright -" Nerd tree - map n :NERDTreeToggle - autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif - if has('nvim') - let NERDTreeBookmarksFile = stdpath('data') . '/NERDTreeBookmarks' - else - let NERDTreeBookmarksFile = '~/.vim' . '/NERDTreeBookmarks' - endif - -" vimling: - nm d :call ToggleDeadKeys() - imap d :call ToggleDeadKeys()a - nm i :call ToggleIPA() - imap i :call ToggleIPA()a - nm q :call ToggleProse() - " Shortcutting split navigation, saving a keypress: map h map j map k map l -" Replace ex mode with gq - map Q gq - -" Check file in shellcheck: - map s :!clear && shellcheck -x % - -" Open my bibliography file in split - map b :vsp$BIB - map r :vsp$REFER - " Replace all is aliased to S. - nnoremap S :%s//g - -" Compile document, be it groff/LaTeX/markdown/etc. - map c :w! \| !compiler "%" - -" Open corresponding .pdf/.html or preview - map p :!opout % - -" Runs a script that cleans out tex build files whenever I close out of a .tex file. - autocmd VimLeave *.tex !texclear % - -" Ensure files are read as what I want: - let g:vimwiki_ext2syntax = {'.Rmd': 'markdown', '.rmd': 'markdown','.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'} - autocmd BufRead,BufNewFile /tmp/calcurse*,~/.calcurse/notes/* set filetype=markdown - autocmd BufRead,BufNewFile *.ms,*.me,*.mom,*.man set filetype=groff - autocmd BufRead,BufNewFile *.tex set filetype=tex - -" Save file as sudo on files that require root permission - cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' edit! - -" Enable Goyo by default for mutt writing - autocmd BufRead,BufNewFile /tmp/neomutt* let g:goyo_width=80 - autocmd BufRead,BufNewFile /tmp/neomutt* :Goyo | set bg=light - autocmd BufRead,BufNewFile /tmp/neomutt* map ZZ :Goyo\|x! - autocmd BufRead,BufNewFile /tmp/neomutt* map ZQ :Goyo\|q! + nnoremap S :%s//g " Automatically deletes all trailing whitespace and newlines at end of file on save. & reset cursor position autocmd BufWritePre * let currPos = getpos(".") @@ -224,43 +67,3 @@ set noshowcmd autocmd BufWritePre * %s/\n\+\%$//e autocmd BufWritePre *.[ch] %s/\%$/\r/e autocmd BufWritePre * cal cursor(currPos[1], currPos[2]) - -" When shortcut files are updated, renew bash and ranger configs with new material: - autocmd BufWritePost bm-files,bm-dirs !shortcuts -" Run xrdb whenever Xdefaults or Xresources are updated. - autocmd BufRead,BufNewFile Xresources,Xdefaults,xresources,xdefaults set filetype=xdefaults - autocmd BufWritePost Xresources,Xdefaults,xresources,xdefaults !xrdb % -" Recompile dwmblocks on config edit. - autocmd BufWritePost ~/.local/src/dwmblocks/config.h !cd ~/.local/src/dwmblocks/; sudo make install && { killall -q dwmblocks;setsid -f dwmblocks } - -" Turns off highlighting on the bits of code that are changed -" so the line that is changed is highlighted but the actual text -" that has changed stands out on the line and is readable. -if &diff - highlight! link DiffText MatchParen -endif - -" Function for toggling the bottom statusbar: -let s:hidden_all = 0 -function! ToggleHiddenAll() - if s:hidden_all == 0 - let s:hidden_all = 1 - set noshowmode - set noruler - set laststatus=0 - set noshowcmd - else - let s:hidden_all = 0 - set showmode - set ruler - set laststatus=2 - set showcmd - endif -endfunction -nnoremap h :call ToggleHiddenAll() - -" Load command shortcuts generated from bm-dirs and bm-files via shortcuts script. -" Here leader is ";". -" So ":vs ;cfz" will expand into ":vs /home//.config/zsh/.zshrc" -" if typed fast without the timeout. -" source ~/.config/nvim/shortcuts.vim