112 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" base settings
 | 
						|
set nocompatible
 | 
						|
let mapleader=","
 | 
						|
 | 
						|
" xdg base directory settings/clean-up
 | 
						|
set runtimepath^=$XDG_CONFIG_HOME/vim
 | 
						|
" add other dirs to path as needed
 | 
						|
" XDG_CONFIG_HOME, XDG_CACHE_HOME, XDG_DATA_HOME, XDG_STATE_HOME, XDG_DATA_DIRS
 | 
						|
" set/override other filenames/paths/dirs as needed
 | 
						|
 | 
						|
" plugin config
 | 
						|
	let g:netrw_banner=0 " hide banner
 | 
						|
	let g:netrw_browse_split=0 " <cr> opens in same window
 | 
						|
	let g:netrw_liststyle=3 " listing style: tree
 | 
						|
	let g:netrw_list_hide= '.*\.swp$'
 | 
						|
 | 
						|
	let g:typescript_indent_disable = 1
 | 
						|
 | 
						|
" functions
 | 
						|
func! ToggleTabMode()
 | 
						|
	set expandtab!
 | 
						|
	if &expandtab
 | 
						|
		echo "using space characters in place of tabs"
 | 
						|
	else
 | 
						|
		echo "using tab characters"
 | 
						|
	endif
 | 
						|
endfunc
 | 
						|
 | 
						|
" copy & paste: registers, clipboard
 | 
						|
set clipboard+=unnamed " TODO or maybe unamedplus?
 | 
						|
 | 
						|
" colors, themes, appearance
 | 
						|
"set background=light
 | 
						|
let g:tokyonight_style = 'night' " available: night, storm
 | 
						|
colorscheme tokyonight
 | 
						|
 | 
						|
" measurements, numbers, visual/audible cues
 | 
						|
set cursorline
 | 
						|
set colorcolumn=89,90
 | 
						|
set noerrorbells novisualbell
 | 
						|
set hlsearch
 | 
						|
set laststatus=2
 | 
						|
set number relativenumber
 | 
						|
set ruler
 | 
						|
set showcmd
 | 
						|
set noshowmode
 | 
						|
set title
 | 
						|
 | 
						|
" syntax highlighting
 | 
						|
syntax enable " TODO 'enable' or 'on'?
 | 
						|
 | 
						|
" settings for buffers
 | 
						|
set hidden
 | 
						|
 | 
						|
" settings for panes/splits, tabs
 | 
						|
set splitright splitbelow
 | 
						|
map <C-h> <C-w>h
 | 
						|
map <C-j> <C-w>j
 | 
						|
map <C-k> <C-w>k
 | 
						|
map <C-l> <C-w>l
 | 
						|
 | 
						|
" finding and opening files
 | 
						|
set wildmenu
 | 
						|
set path+=**
 | 
						|
 | 
						|
" text input and editing
 | 
						|
set tabstop=4
 | 
						|
set expandtab
 | 
						|
autocmd BufEnter * set formatoptions-=ro
 | 
						|
" TODO get recursion working for the tags command below
 | 
						|
command! MakeTags !ctags -f tags -R .
 | 
						|
 | 
						|
" shortcuts or aliases
 | 
						|
	" shortcuts for find in pane/tab
 | 
						|
	nnoremap <leader>f. :find<Space>*
 | 
						|
	nmap <leader>fr :vnew<CR><leader>f.
 | 
						|
	nmap <leader>fb :new<CR><leader>f.
 | 
						|
	nmap <leader>ft :tabnew<CR><leader>f.
 | 
						|
 | 
						|
	" shortcuts for grep in pane/tab
 | 
						|
	nnoremap <leader>g, :r<Space>!grep<Space>--exclude-dir=node_modules<Space>-rIi<Space><Space>.<Left><Left>
 | 
						|
	nmap <leader>g. :enew<CR><leader>g,
 | 
						|
	nmap <leader>gr :vnew<CR><leader>g,
 | 
						|
	nmap <leader>gb :new<CR><leader>g,
 | 
						|
	nmap <leader>gt :tabnew<CR><leader>g,
 | 
						|
 | 
						|
	" shortcuts for tree (netrw) in pane/tab
 | 
						|
	nnoremap <leader>t. :edit<Space>.<CR>
 | 
						|
	nnoremap <leader>tr :vsplit<Space>.<CR>
 | 
						|
	nnoremap <leader>tb :split<Space>.<CR>
 | 
						|
	nnoremap <leader>tt :tabnew<Space>.<CR>
 | 
						|
 | 
						|
	" toggle tab/space mode
 | 
						|
	nnoremap <leader>tab :call ToggleTabMode()<CR>
 | 
						|
 | 
						|
	" toggles related to line numbers and cursor
 | 
						|
	nnoremap <leader>nu :set number!<CR>
 | 
						|
	nnoremap <leader>rnu :set relativenumber!<CR>
 | 
						|
	nnoremap <leader>cc :set cuc!<CR>
 | 
						|
 | 
						|
	" searching: replace-all in file
 | 
						|
	nnoremap <leader>ra :%s//g<Left><Left>
 | 
						|
	" TODO maybe add global (working dir, recursive) replace-all feature?
 | 
						|
 | 
						|
	" format file content
 | 
						|
	nnoremap <leader>fmtjson :%!jq<Space>.<Space>-<CR>
 | 
						|
 | 
						|
" automatic actions
 | 
						|
	autocmd BufWritePre * %s/\s\+$//e " delete trailing whitespace
 | 
						|
	" autocmd BufWritePre * %s/\n\+\%$//e " delete end-of-file newlines
 | 
						|
 |