summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Shipp <nick@shipp.ninja>2017-02-14 08:41:16 -0500
committerNick Shipp <nick@shipp.ninja>2017-02-14 08:41:16 -0500
commit24a605577c8e09a75f8f717f9df1bdc6c8dd8ec3 (patch)
tree794db72af4e1ddf41cff2d1f6371b27103562d69
initial commit
-rw-r--r--.gitignore7
-rw-r--r--.gitmodules6
-rw-r--r--mpv/mpv.conf4
m---------vim/bundle/asyncrun.vim0
m---------vim/bundle/perldoc-vim0
m---------vim/bundle/w3m.vim0
-rw-r--r--vim/colors/apprentice.vim252
-rw-r--r--vim/compiler/perlcritic.vim23
-rw-r--r--vim/ftplugin/perl.vim5
-rw-r--r--vim/main.vim100
-rw-r--r--vim/perlcritic.vim22
-rw-r--r--zsh/.zshrc1
-rw-r--r--zsh/00_params.zsh15
-rw-r--r--zsh/01_env.zsh15
-rw-r--r--zsh/02_settings.zsh36
-rw-r--r--zsh/Functions/_uri58
-rw-r--r--zsh/Functions/memoize11
-rw-r--r--zsh/aliases.zsh7
-rw-r--r--zsh/completion.zsh23
-rw-r--r--zsh/dircolors141
-rw-r--r--zsh/functions.zsh27
-rw-r--r--zsh/keys.zsh18
-rw-r--r--zsh/zkbd/st-256color-unknown-linux-gnu28
23 files changed, 799 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..07bb114
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+.*.un~
+.*.sw*
+priv
+qutebrowser/bookmarks
+.netrwhist
+tags
+.zcompdump
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..fc7004a
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "vim/bundle/asyncrun.vim"]
+ path = vim/bundle/asyncrun.vim
+ url = https://github.com/skywind3000/asyncrun.vim.git
+[submodule "vim/bundle/w3m.vim"]
+ path = vim/bundle/w3m.vim
+ url = https://github.com/yuratomo/w3m.vim.git
diff --git a/mpv/mpv.conf b/mpv/mpv.conf
new file mode 100644
index 0000000..1f846a6
--- /dev/null
+++ b/mpv/mpv.conf
@@ -0,0 +1,4 @@
+vo=opengl
+hwdec=vaapi
+ao=alsa
+ytdl-raw-options=netrc=
diff --git a/vim/bundle/asyncrun.vim b/vim/bundle/asyncrun.vim
new file mode 160000
+Subproject 1467e5852a3bbb5bc23a62374eb16dfb0fd0c42
diff --git a/vim/bundle/perldoc-vim b/vim/bundle/perldoc-vim
new file mode 160000
+Subproject ef095a51f886f6fef50005c999c12f8de9bc406
diff --git a/vim/bundle/w3m.vim b/vim/bundle/w3m.vim
new file mode 160000
+Subproject 228a852b188f1a62ecea55fa48b0ec892fa6bad
diff --git a/vim/colors/apprentice.vim b/vim/colors/apprentice.vim
new file mode 100644
index 0000000..bc864e9
--- /dev/null
+++ b/vim/colors/apprentice.vim
@@ -0,0 +1,252 @@
+" 'apprentice.vim' -- Vim color scheme.
+" Author: Romain Lafourcade (romainlafourcade@gmail.com)
+" Description: Essentially a streamlining and conversion to xterm colors of
+" 'sorcerer' by Jeet Sukumaran (jeetsukumaran@gmailcom)
+
+" MADE-UP NAME HEX RGB XTERM ANSI
+" ========================================================================
+" almost black #1c1c1c rgb(28, 28, 28) 234 0
+" darker grey #262626 rgb(38, 38, 38) 235 background color
+" dark grey #303030 rgb(48, 48, 48) 236 8
+" grey #444444 rgb(68, 68, 68) 238 8
+" medium grey #585858 rgb(88, 88, 88) 240 8
+" light grey #6c6c6c rgb(108, 108, 108) 242 7
+" lighter grey #bcbcbc rgb(188, 188, 188) 250 foreground color
+" white #ffffff rgb(255, 255, 255) 231 15
+" purple #5f5f87 rgb(95, 95, 135) 60 5
+" light purple #8787af rgb(135, 135, 175) 103 13
+" green #5f875f rgb(95, 135, 95) 65 2
+" light green #87af87 rgb(135, 175, 135) 108 10
+" aqua #5f8787 rgb(95, 135, 135) 66 6
+" light aqua #5fafaf rgb(95, 175, 175) 73 14
+" blue #5f87af rgb(95, 135, 175) 67 4
+" light blue #8fafd7 rgb(143, 175, 215) 110 12
+" red #af5f5f rgb(175, 95, 95) 131 1
+" orange #ff8700 rgb(255, 135, 0) 208 9
+" ocre #87875f rgb(135, 135, 95) 101 3
+" yellow #ffffaf rgb(255, 255, 175) 229 11
+
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "apprentice"
+
+if ($TERM =~ '256' || &t_Co >= 256) || has("gui_running")
+ hi Normal ctermbg=NONE ctermfg=250 guibg=#262626 guifg=#bcbcbc cterm=NONE gui=NONE
+ hi LineNr ctermbg=234 ctermfg=242 guibg=#1c1c1c guifg=#6c6c6c cterm=NONE gui=NONE
+ hi FoldColumn ctermbg=234 ctermfg=242 guibg=#1c1c1c guifg=#6c6c6c cterm=NONE gui=NONE
+ hi Folded ctermbg=234 ctermfg=242 guibg=#1c1c1c guifg=#6c6c6c cterm=NONE gui=NONE
+ hi MatchParen ctermbg=234 ctermfg=229 guibg=#1c1c1c guifg=#ffffaf cterm=NONE gui=NONE
+ hi signColumn ctermbg=234 ctermfg=242 guibg=#1c1c1c guifg=#6c6c6c cterm=NONE gui=NONE
+
+ set background=dark
+
+ hi Comment ctermbg=NONE ctermfg=240 guibg=NONE guifg=#585858 cterm=NONE gui=NONE
+ hi Conceal ctermbg=NONE ctermfg=250 guibg=NONE guifg=#bcbcbc cterm=NONE gui=NONE
+ hi Constant ctermbg=NONE ctermfg=208 guibg=NONE guifg=#ff8700 cterm=NONE gui=NONE
+ hi Error ctermbg=NONE ctermfg=131 guibg=NONE guifg=#af5f5f cterm=reverse gui=reverse
+ hi Identifier ctermbg=NONE ctermfg=67 guibg=NONE guifg=#5f87af cterm=NONE gui=NONE
+ hi Ignore ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE cterm=NONE gui=NONE
+ hi PreProc ctermbg=NONE ctermfg=66 guibg=NONE guifg=#5f8787 cterm=NONE gui=NONE
+ hi Special ctermbg=NONE ctermfg=65 guibg=NONE guifg=#5f875f cterm=NONE gui=NONE
+ hi Statement ctermbg=NONE ctermfg=110 guibg=NONE guifg=#8fafd7 cterm=NONE gui=NONE
+ hi String ctermbg=NONE ctermfg=108 guibg=NONE guifg=#87af87 cterm=NONE gui=NONE
+ hi Todo ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE cterm=reverse gui=reverse
+ hi Type ctermbg=NONE ctermfg=103 guibg=NONE guifg=#8787af cterm=NONE gui=NONE
+ hi Underlined ctermbg=NONE ctermfg=66 guibg=NONE guifg=#5f8787 cterm=underline gui=underline
+
+ hi NonText ctermbg=NONE ctermfg=240 guibg=NONE guifg=#585858 cterm=NONE gui=NONE
+
+ hi Pmenu ctermbg=238 ctermfg=250 guibg=#444444 guifg=#bcbcbc cterm=NONE gui=NONE
+ hi PmenuSbar ctermbg=240 ctermfg=NONE guibg=#585858 guifg=NONE cterm=NONE gui=NONE
+ hi PmenuSel ctermbg=66 ctermfg=235 guibg=#5f8787 guifg=#262626 cterm=NONE gui=NONE
+ hi PmenuThumb ctermbg=66 ctermfg=66 guibg=#5f8787 guifg=#5f8787 cterm=NONE gui=NONE
+
+ hi ErrorMsg ctermbg=131 ctermfg=235 guibg=#af5f5f guifg=#262626 cterm=NONE gui=NONE
+ hi ModeMsg ctermbg=108 ctermfg=235 guibg=#87af87 guifg=#262626 cterm=NONE gui=NONE
+ hi MoreMsg ctermbg=NONE ctermfg=66 guibg=NONE guifg=#5f8787 cterm=NONE gui=NONE
+ hi Question ctermbg=NONE ctermfg=108 guibg=NONE guifg=#87af87 cterm=NONE gui=NONE
+ hi WarningMsg ctermbg=NONE ctermfg=131 guibg=NONE guifg=#af5f5f cterm=NONE gui=NONE
+
+ hi TabLine ctermbg=238 ctermfg=101 guibg=#444444 guifg=#87875f cterm=NONE gui=NONE
+ hi TabLineFill ctermbg=238 ctermfg=238 guibg=#444444 guifg=#444444 cterm=NONE gui=NONE
+ hi TabLineSel ctermbg=101 ctermfg=235 guibg=#87875f guifg=#262626 cterm=NONE gui=NONE
+
+ hi Cursor ctermbg=242 ctermfg=NONE guibg=#6c6c6c guifg=NONE cterm=NONE gui=NONE
+ hi CursorColumn ctermbg=236 ctermfg=NONE guibg=#303030 guifg=NONE cterm=NONE gui=NONE
+ hi CursorLineNr ctermbg=236 ctermfg=73 guibg=#303030 guifg=#5fafaf cterm=NONE gui=NONE
+ hi CursorLine ctermbg=236 ctermfg=NONE guibg=#303030 guifg=NONE cterm=NONE gui=NONE
+
+ hi helpLeadBlank ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE cterm=NONE gui=NONE
+ hi helpNormal ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE cterm=NONE gui=NONE
+
+ hi StatusLine ctermbg=101 ctermfg=235 guibg=#87875f guifg=#262626 cterm=NONE gui=NONE
+ hi StatusLineNC ctermbg=238 ctermfg=101 guibg=#444444 guifg=#87875f cterm=NONE gui=italic
+
+ hi Visual ctermbg=NONE ctermfg=110 guibg=#262626 guifg=#8fafd7 cterm=reverse gui=reverse
+ hi VisualNOS ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE cterm=underline gui=underline
+
+ hi VertSplit ctermbg=238 ctermfg=238 guibg=#444444 guifg=#444444 cterm=NONE gui=NONE
+ hi WildMenu ctermbg=110 ctermfg=235 guibg=#8fafd7 guifg=#262626 cterm=NONE gui=NONE
+
+ hi Function ctermbg=NONE ctermfg=229 guibg=NONE guifg=#ffffaf cterm=NONE gui=NONE
+ hi SpecialKey ctermbg=NONE ctermfg=240 guibg=NONE guifg=#585858 cterm=NONE gui=NONE
+ hi Title ctermbg=NONE ctermfg=231 guibg=NONE guifg=#ffffff cterm=NONE gui=NONE
+
+ hi DiffAdd ctermbg=NONE ctermfg=108 guibg=#262626 guifg=#87af87 cterm=reverse gui=reverse
+ hi DiffChange ctermbg=NONE ctermfg=103 guibg=#262626 guifg=#8787af cterm=reverse gui=reverse
+ hi DiffDelete ctermbg=NONE ctermfg=131 guibg=#262626 guifg=#af5f5f cterm=reverse gui=reverse
+ hi DiffText ctermbg=NONE ctermfg=208 guibg=#262626 guifg=#ff8700 cterm=reverse gui=reverse
+
+ hi IncSearch ctermbg=131 ctermfg=235 guibg=#af5f5f guifg=#262626 cterm=NONE gui=NONE
+ hi Search ctermbg=229 ctermfg=235 guibg=#ffffaf guifg=#262626 cterm=NONE gui=NONE
+
+ hi Directory ctermbg=NONE ctermfg=73 guibg=NONE guifg=#5fafaf cterm=NONE gui=NONE
+
+ if has("gui_running")
+ hi SpellBad ctermbg=NONE ctermfg=131 guibg=NONE guifg=NONE cterm=undercurl gui=undercurl guisp=#af5f5f
+ hi SpellCap ctermbg=NONE ctermfg=73 guibg=NONE guifg=NONE cterm=undercurl gui=undercurl guisp=#5fafaf
+ hi SpellLocal ctermbg=NONE ctermfg=65 guibg=NONE guifg=NONE cterm=undercurl gui=undercurl guisp=#5f875f
+ hi SpellRare ctermbg=NONE ctermfg=208 guibg=NONE guifg=NONE cterm=undercurl gui=undercurl guisp=#ff8700
+ else
+ hi SpellBad ctermbg=NONE ctermfg=131 guibg=NONE guifg=#af5f5f cterm=undercurl gui=undercurl guisp=NONE
+ hi SpellCap ctermbg=NONE ctermfg=73 guibg=NONE guifg=#5fafaf cterm=undercurl gui=undercurl guisp=NONE
+ hi SpellLocal ctermbg=NONE ctermfg=65 guibg=NONE guifg=#5f875f cterm=undercurl gui=undercurl guisp=NONE
+ hi SpellRare ctermbg=NONE ctermfg=208 guibg=NONE guifg=#ff8700 cterm=undercurl gui=undercurl guisp=NONE
+ endif
+
+ hi ColorColumn ctermbg=131 ctermfg=NONE guibg=#af5f5f guifg=NONE cterm=NONE gui=NONE
+elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16
+ set t_Co=16
+
+ hi Normal ctermbg=NONE ctermfg=white cterm=NONE
+
+ set background=dark
+
+ hi Comment ctermbg=NONE ctermfg=gray cterm=NONE
+ hi Conceal ctermbg=NONE ctermfg=white cterm=NONE
+ hi Constant ctermbg=NONE ctermfg=red cterm=NONE
+ hi Function ctermbg=NONE ctermfg=yellow cterm=NONE
+ hi Identifier ctermbg=NONE ctermfg=darkblue cterm=NONE
+ hi PreProc ctermbg=NONE ctermfg=darkcyan cterm=NONE
+ hi Special ctermbg=NONE ctermfg=darkgreen cterm=NONE
+ hi Statement ctermbg=NONE ctermfg=blue cterm=NONE
+ hi String ctermbg=NONE ctermfg=green cterm=NONE
+ hi Todo ctermbg=NONE ctermfg=NONE cterm=reverse
+ hi Type ctermbg=NONE ctermfg=magenta cterm=NONE
+
+ hi Error ctermbg=NONE ctermfg=darkred cterm=reverse
+ hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE
+ hi Underlined ctermbg=NONE ctermfg=NONE cterm=reverse
+
+ hi LineNr ctermbg=black ctermfg=gray cterm=NONE
+ hi NonText ctermbg=NONE ctermfg=darkgray cterm=NONE
+
+ hi Pmenu ctermbg=darkgray ctermfg=white cterm=NONE
+ hi PmenuSbar ctermbg=gray ctermfg=NONE cterm=NONE
+ hi PmenuSel ctermbg=darkcyan ctermfg=black cterm=NONE
+ hi PmenuThumb ctermbg=darkcyan ctermfg=NONE cterm=NONE
+
+ hi ErrorMsg ctermbg=darkred ctermfg=black cterm=NONE
+ hi ModeMsg ctermbg=darkgreen ctermfg=black cterm=NONE
+ hi MoreMsg ctermbg=NONE ctermfg=darkcyan cterm=NONE
+ hi Question ctermbg=NONE ctermfg=green cterm=NONE
+ hi WarningMsg ctermbg=NONE ctermfg=darkred cterm=NONE
+
+ hi TabLine ctermbg=darkgray ctermfg=darkyellow cterm=NONE
+ hi TabLineFill ctermbg=darkgray ctermfg=black cterm=NONE
+ hi TabLineSel ctermbg=darkyellow ctermfg=black cterm=NONE
+
+ hi Cursor ctermbg=NONE ctermfg=NONE cterm=NONE
+ hi CursorColumn ctermbg=darkgray ctermfg=NONE cterm=NONE
+ hi CursorLineNr ctermbg=black ctermfg=cyan cterm=NONE
+ hi CursorLine ctermbg=darkgray ctermfg=NONE cterm=NONE
+
+ hi helpLeadBlank ctermbg=NONE ctermfg=NONE cterm=NONE
+ hi helpNormal ctermbg=NONE ctermfg=NONE cterm=NONE
+
+ hi StatusLine ctermbg=darkyellow ctermfg=black cterm=NONE
+ hi StatusLineNC ctermbg=darkgray ctermfg=darkyellow cterm=NONE
+
+ hi Visual ctermbg=black ctermfg=blue cterm=reverse
+ hi VisualNOS ctermbg=black ctermfg=white cterm=reverse
+
+ hi FoldColumn ctermbg=black ctermfg=darkgray cterm=NONE
+ hi Folded ctermbg=black ctermfg=darkgray cterm=NONE
+
+ hi VertSplit ctermbg=darkgray ctermfg=darkgray cterm=NONE
+ hi WildMenu ctermbg=blue ctermfg=black cterm=NONE
+
+ hi SpecialKey ctermbg=NONE ctermfg=darkgray cterm=NONE
+ hi Title ctermbg=NONE ctermfg=white cterm=NONE
+
+ hi DiffAdd ctermbg=black ctermfg=green cterm=reverse
+ hi DiffChange ctermbg=black ctermfg=magenta cterm=reverse
+ hi DiffDelete ctermbg=black ctermfg=darkred cterm=reverse
+ hi DiffText ctermbg=black ctermfg=red cterm=reverse
+
+ hi IncSearch ctermbg=darkred ctermfg=black cterm=NONE
+ hi Search ctermbg=yellow ctermfg=black cterm=NONE
+
+ hi Directory ctermbg=NONE ctermfg=cyan cterm=NONE
+ hi MatchParen ctermbg=black ctermfg=yellow cterm=NONE
+
+ hi SpellBad ctermbg=NONE ctermfg=darkred cterm=undercurl
+ hi SpellCap ctermbg=NONE ctermfg=darkyellow cterm=undercurl
+ hi SpellLocal ctermbg=NONE ctermfg=darkgreen cterm=undercurl
+ hi SpellRare ctermbg=NONE ctermfg=darkmagenta cterm=undercurl
+
+ hi ColorColumn ctermbg=darkred ctermfg=NONE cterm=NONE
+ hi SignColumn ctermbg=black ctermfg=darkgray cterm=NONE
+endif
+
+hi link Boolean Constant
+hi link Character Constant
+hi link Conditional Statement
+hi link Debug Special
+hi link Define PreProc
+hi link Delimiter Special
+hi link Exception Statement
+hi link Float Number
+hi link HelpCommand Statement
+hi link HelpExample Statement
+hi link Include PreProc
+hi link Keyword Statement
+hi link Label Statement
+hi link Macro PreProc
+hi link Number Constant
+hi link Operator Statement
+hi link PreCondit PreProc
+hi link Repeat Statement
+hi link SpecialChar Special
+hi link SpecialComment Special
+hi link StorageClass Type
+hi link Structure Type
+hi link Tag Special
+hi link Typedef Type
+
+hi link htmlEndTag htmlTagName
+hi link htmlLink Function
+hi link htmlSpecialTagName htmlTagName
+hi link htmlTag htmlTagName
+hi link htmlBold Normal
+hi link htmlItalic Normal
+hi link xmlTag Statement
+hi link xmlTagName Statement
+hi link xmlEndTag Statement
+
+hi link markdownItalic Preproc
+hi link asciidocQuotedEmphasized Preproc
+
+hi link diffBDiffer WarningMsg
+hi link diffCommon WarningMsg
+hi link diffDiffer WarningMsg
+hi link diffIdentical WarningMsg
+hi link diffIsA WarningMsg
+hi link diffNoEOL WarningMsg
+hi link diffOnly WarningMsg
+hi link diffRemoved WarningMsg
+hi link diffAdded String
diff --git a/vim/compiler/perlcritic.vim b/vim/compiler/perlcritic.vim
new file mode 100644
index 0000000..b42a8e7
--- /dev/null
+++ b/vim/compiler/perlcritic.vim
@@ -0,0 +1,23 @@
+" Vim Compiler File
+" Compiler: perlcritic
+" Maintainer: Scott Peshak <speshak@gmail.com>
+" Last Change: 2017 Feb 10
+
+if exists("current_compiler")
+finish
+endif
+let current_compiler = "perlcritic"
+
+if exists(":CompilerSet") != 2
+command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+" nshp - bump severity up to 4, add --quiet
+CompilerSet makeprg=perlcritic\ -verbose\ 1\ -4\ --quiet\ %
+CompilerSet errorformat=%f:%l:%c:%m
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/vim/ftplugin/perl.vim b/vim/ftplugin/perl.vim
new file mode 100644
index 0000000..9d27999
--- /dev/null
+++ b/vim/ftplugin/perl.vim
@@ -0,0 +1,5 @@
+setl formatprg=perltidy\ -q
+" Indent-only perltidy for ==
+setl equalprg=perltidy\ -q\ -io
+" Linting with :make
+compiler perlcritic
diff --git a/vim/main.vim b/vim/main.vim
new file mode 100644
index 0000000..48bcd14
--- /dev/null
+++ b/vim/main.vim
@@ -0,0 +1,100 @@
+""
+" Configuration for my config organization
+"
+set directory=$XDG_CONFIG_HOME/vim,~/,/tmp
+set backupdir=$XDG_CACHE_HOME/vim,~/,/tmp
+set viminfo+=n$XDG_CACHE_HOME/vim/viminfo
+set runtimepath=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIM,$VIMRUNTIME
+let $MYVIMRC="$XDG_CONFIG_HOME/vim/main.vim"
+""
+
+" Auto-load plugins from $VIMRUNTIME/bundle
+"execute pathogen#infect()
+
+""
+" General mappings and stuff
+let mapleader = "-"
+""
+
+" Apply filetype-based indent rules and plugins
+filetype plugin indent on
+
+" Arch comes with some sensible defaults, might as well use them
+runtime! archlinux.vim
+" And so does vim itself
+runtime! defaults.vim
+" I like reading manpages in vim.
+runtime! ftplugin/man.vim
+
+""
+" Load the matchit plugin (shipped with vim) for jumping to matching #ifs and
+" #endifs and so on.
+" Requires vim 8 for :packadd
+packadd! matchit
+
+" romainl's apprentice colorscheme, with a few changes for higher contrast
+colorscheme apprentice
+
+""
+" Settings!
+"
+set expandtab " <tab> expans to spaces
+set shiftwidth=4 " 4 spaces for autoindent
+set softtabstop=4 " <tab> inserts 4 spaces at a time
+set autowrite " write before swapping buffers
+set number " regular line numbers
+set ttyfast " xterms and linux consoles are fast
+set ttymouse=sgr " for mouse events in columns >233
+set clipboard=unnamed " default to the * register to share with X11
+set undolevels=100000 " don't discard my undo tree
+set undofile " persistent undo tree
+"
+
+""
+" PASTEBIN with pbpst
+"
+" Mappings:
+" <leader>p{motion} Paste {motion} lines
+" <leader>pp Paste entire buffer (same as gg<leader>pG)
+" <leader>p (Visual) paste selection
+"
+" The pastebin URL is stored to the * register.
+" With +X11, this is shared with the X primary selection (middle click or
+" shift-insert to paste.)
+function! Paste(type, ...)
+ " Line-wise ranges
+ if a:type == 'line' || a:type == 'V' || a:type == '%'
+ if a:type == 'line'
+ let start = "'[" " motion lines
+ let end = "']"
+ elseif a:type == 'V'
+ let start = "'<" " visual lines
+ let end = "'>"
+ else
+ let start = 1 " entire file
+ let end = "$"
+ endif
+ let @* = systemlist('pbpst -S 2>/dev/null', getline(start, end))[0] . '/' . &filetype
+ " Character-wise ranges
+ elseif a:type == 'char' || a:type == 'v'
+ if a:type == 'char'
+ let start = "'[" " motion
+ let end = "']"
+ else
+ let start = "`<" " visual
+ let end = "`>"
+ endif
+ let input = getline(start, end)
+ let input[0] = input[0][col(start):]
+ let input[-1] = input[-1][:col(end)-1]
+ let @* = systemlist('pbpst -S 2>/dev/null', input)[0] . '/' . &filetype
+ " Block ranges (not handled)
+ else
+ echoerr "Paste: unsupported selection type: " . a:type
+ endif
+endfunction
+
+nnoremap <leader>p :silent set opfunc=Paste<cr>g@
+nnoremap <leader>pp :call Paste('%')<CR>
+vnoremap <leader>p <esc>:call Paste(visualmode())<CR>
+""
diff --git a/vim/perlcritic.vim b/vim/perlcritic.vim
new file mode 100644
index 0000000..16a75b1
--- /dev/null
+++ b/vim/perlcritic.vim
@@ -0,0 +1,22 @@
+" Vim Compiler File
+" Compiler: perlcritic
+" Maintainer: Scott Peshak <speshak@gmail.com>
+" Last Change: 2006 Dec 19
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "perlcritic"
+
+if exists(":CompilerSet") != 2
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo-=C
+
+CompilerSet makeprg=perlcritic\ -verbose\ 1\ -2\ %
+CompilerSet errorformat=%f:%l:%c:%m
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/zsh/.zshrc b/zsh/.zshrc
new file mode 100644
index 0000000..d9499b6
--- /dev/null
+++ b/zsh/.zshrc
@@ -0,0 +1 @@
+for cfg ($ZDOTDIR/*.zsh) source $cfg
diff --git a/zsh/00_params.zsh b/zsh/00_params.zsh
new file mode 100644
index 0000000..15b8e3e
--- /dev/null
+++ b/zsh/00_params.zsh
@@ -0,0 +1,15 @@
+PROMPT='%F{249}%D{%H}%F{245}%D{%M}%F{242}%D{%S} %F{red}%n%f@%F{blue}%m%f %F{yellow}%1~%f %(!.#.$) '
+
+FCEDIT=$VISUAL
+HISTFILE=$XDG_DATA_HOME/zsh/history
+HISTSIZE=10000
+SAVEHIST=10000000
+REPORTTIME=60
+
+fpath=($ZDOTDIR/Functions $fpath)
+path=($HOME/bin /usr/bin/vendor_perl $path)
+
+# Expand ~zsh to $ZDOTDIR
+hash -d zsh=$ZDOTDIR
+# Same for vim
+hash -d vim=$XDG_CONFIG_HOME/vim
diff --git a/zsh/01_env.zsh b/zsh/01_env.zsh
new file mode 100644
index 0000000..a3886ce
--- /dev/null
+++ b/zsh/01_env.zsh
@@ -0,0 +1,15 @@
+EDITOR="ed -p:"
+VISUAL=vim
+SUDO_EDITOR="vim -Z"
+MANPAGER="vim -M +MANPAGER -"
+PAGER=vimpager
+BROWSER=qutebrowser
+TERMINAL=st
+VIMINIT="let \$MYVIMRC = '$XDG_CONFIG_HOME/vim/main.vim' | source \$MYVIMRC"
+VIMPAGER_RC="$XDG_CONFIG_HOME/vim/main.vim"
+PERLDOC_PAGER=vimpager
+PERLTIDY=$XDG_CONFIG_HOME/perltidy
+
+export EDITOR VISUAL SUDO_EDITOR MANPAGER PAGER BROWSER TERMINAL VIMINIT PERLDOC_PAGER VIMPAGER_RC PERLTIDY
+eval $(dircolors -b)
+eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
diff --git a/zsh/02_settings.zsh b/zsh/02_settings.zsh
new file mode 100644
index 0000000..b4cd758
--- /dev/null
+++ b/zsh/02_settings.zsh
@@ -0,0 +1,36 @@
+# Changing Directories
+setopt auto_cd
+setopt auto_pushd
+setopt pushd_ignore_dups
+setopt pushd_minus
+setopt pushd_silent
+# Completion
+setopt glob_complete
+setopt list_packed
+# Expansion and Globbing
+unsetopt case_glob
+setopt extended_glob
+setopt glob_star_short
+setopt magic_equal_subst
+setopt warn_create_global
+# History
+setopt hist_fcntl_lock
+setopt hist_ignore_all_dups
+setopt hist_reduce_blanks
+setopt hist_save_no_dups
+setopt share_history
+# Input/Output
+setopt interactive_comments
+setopt print_exit_value
+# Job Control
+setopt auto_continue
+setopt long_list_jobs
+# Scripts and Functions
+setopt c_bases
+setopt c_precedences
+setopt local_loops
+setopt pipe_fail
+# Shell Emulation
+setopt csh_junkie_loops
+# Zle
+unsetopt beep
diff --git a/zsh/Functions/_uri b/zsh/Functions/_uri
new file mode 100644
index 0000000..40d1811
--- /dev/null
+++ b/zsh/Functions/_uri
@@ -0,0 +1,58 @@
+compdef uri
+
+local uri_commands
+uri_commands=( \
+ create change scheme has_recognized_scheme \
+ opaque path fragment as_string as_iri canonical \
+ secure authority path path_query query userinfo host \
+ ihost port host_port default_port \
+ media_type data \
+ file dir \
+ user password \
+ gopher_type selector search string \
+ dn attributes scope filter extensions \
+ un_path \
+ to headers \
+ group message \
+ nid nss )
+
+_arguments \
+ '1: :->cmds' \
+ '*:: :->args'
+
+
+case $state in
+ (cmds)
+ _values 'uri commands' $uri_commands
+ ;;
+ (args)
+ _arguments \
+ '--scheme=-:' \
+ '--path=-:' \
+ '--opaque=-[Opaque portion of URI (between scheme: and fragment)]:' \
+ '--fragment=-[Escaped URI fragment (#foo)]:' \
+ '--authority=-:' \
+ '--query=-[Escaped query component]:' \
+ '--userinfo=-[e.g. username:password]:' \
+ '--port=-:' \
+ '--host_port=-[host:port]:' \
+ '--media_type=-[Media type for data: URIs]:' \
+ '--data=-[Data for data: URIs]:' \
+ '--file=-[File for file:, ftp:, etc.]:' \
+ '--gopher_type=-:' \
+ '--selector=-[Gopher selector]:' \
+ '--search=-[Gopher query]:' \
+ '--string=-[Gopher string]:' \
+ '--dn=-[LDAP DN]' \
+ '--attributes=-[LDAP attributes]' \
+ '--scope=-[LDAP search scope]:' \
+ '--extensions=-[LDAP extensions]:' \
+ '--un_path=-[Local socket path for ldapi]:' \
+ '--to=-[Address for mailto:]:' \
+ '--headers=-[mailto: headers]:' \
+ '--group=-[Newsgroup]:' \
+ '--message=-[Newsgroup message]:' \
+ '--nid=-[Namespace identifier for urn:]:' \
+ '--nss=-[Namespace-specific string for urn:]:'
+ ;;
+esac
diff --git a/zsh/Functions/memoize b/zsh/Functions/memoize
new file mode 100644
index 0000000..c58e65d
--- /dev/null
+++ b/zsh/Functions/memoize
@@ -0,0 +1,11 @@
+if ((! $+MEMOIZE)) {
+ declare -Ag MEMOIZE
+}
+
+if (($+MEMOIZE[$*])) {
+ printf '%s' "$MEMOIZE[$*]"
+ return
+}
+
+MEMOIZE[$*]=$(eval $*)
+printf '%s' "$MEMOIZE[$*]"
diff --git a/zsh/aliases.zsh b/zsh/aliases.zsh
new file mode 100644
index 0000000..fcc87c6
--- /dev/null
+++ b/zsh/aliases.zsh
@@ -0,0 +1,7 @@
+alias -g ...='../..'
+alias -g ....='../../..'
+
+alias chmod='chmod -c'
+alias grep='grep --color'
+alias ls='ls --color -A'
+alias l='ls --color -Althur'
diff --git a/zsh/completion.zsh b/zsh/completion.zsh
new file mode 100644
index 0000000..6baf129
--- /dev/null
+++ b/zsh/completion.zsh
@@ -0,0 +1,23 @@
+zstyle ':completion:*' completer _expand _complete _ignored _match _approximate _prefix
+zstyle ':completion:*' completions 1
+zstyle ':completion:*' format 'Completing %d'
+zstyle ':completion:*' glob 1
+zstyle ':completion:*' group-name ''
+zstyle ':completion:*' list-colors ''
+zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
+zstyle ':completion:*' matcher-list '' 'r:|[._-]=** r:|=**' '+m:{[:lower:]}={[:upper:]}' '+l:|=* r:|=*'
+zstyle ':completion:*' max-errors 2 numeric
+zstyle ':completion:*' menu select=1
+zstyle ':completion:*' prompt 'corrections? (%e)'
+zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
+zstyle ':completion:*' substitute 1
+zstyle ':completion:*' verbose true
+zstyle ':completion:*' use-cache on
+zstyle ':completion:*' cache-path $XDG_CACHE_HOME/zsh
+zstyle ':completion:*:functions' ignored-patterns '_*'
+zstyle ':completion:*:kill:*' force-list always
+zstyle ':completion:*:cd:*' ignore-parents parent pwd
+zstyle :compinstall filename '/home/nick/cfg/zsh/completion.zsh'
+
+autoload -Uz compinit
+compinit
diff --git a/zsh/dircolors b/zsh/dircolors
new file mode 100644
index 0000000..e64f1a4
--- /dev/null
+++ b/zsh/dircolors
@@ -0,0 +1,141 @@
+# Configuration file for dircolors, a utility to help you set the
+# LS_COLORS environment variable used by GNU ls with the --color option.
+# Copyright (C) 1996-2016 Free Software Foundation, Inc.
+# Copying and distribution of this file, with or without modification,
+# are permitted provided the copyright notice and this notice are preserved.
+# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
+# slackware version of dircolors) are recognized but ignored.
+# Below are TERM entries, which can be a glob patterns, to match
+# against the TERM environment variable to determine if it is colorizable.
+TERM Eterm
+TERM ansi
+TERM *color*
+TERM con[0-9]*x[0-9]*
+TERM cons25
+TERM console
+TERM cygwin
+TERM dtterm
+TERM gnome
+TERM hurd
+TERM jfbterm
+TERM konsole
+TERM kterm
+TERM linux
+TERM linux-c
+TERM mlterm
+TERM putty
+TERM rxvt*
+TERM screen*
+TERM st
+TERM terminator
+TERM tmux*
+TERM vt100
+TERM xterm*
+# Below are the color init strings for the basic file types. A color init
+# string consists of one or more of the following numeric codes:
+# Attribute codes:
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
+# Text color codes:
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
+# Background color codes:
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
+#NORMAL 00 # no color code at all
+#FILE 00 # regular file: use no color at all
+RESET 0 # reset to "normal" color
+DIR 01;34 # directory
+LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
+ # numerical value, the color is as for the file pointed to.)
+MULTIHARDLINK 00 # regular file with more than one link
+FIFO 40;33 # pipe
+SOCK 01;35 # socket
+DOOR 01;35 # door
+BLK 40;33;01 # block device driver
+CHR 40;33;01 # character device driver
+ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
+MISSING 00 # ... and the files they point to
+SETUID 37;41 # file that is setuid (u+s)
+SETGID 30;43 # file that is setgid (g+s)
+CAPABILITY 30;41 # file with capability
+STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
+OTHER_WRITABLE 1;31 # dir that is other-writable (o+w) and not sticky
+STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
+# This is for files with execute permission:
+EXEC 01;32
+# List any file extensions like '.gz' or '.tar' that you would like ls
+# to colorize below. Put the extension, a space, and the color init string.
+# (and any comments you want to add after a '#')
+# If you use DOS-style suffixes, you may want to uncomment the following:
+#.cmd 01;32 # executables (bright green)
+#.exe 01;32
+#.com 01;32
+#.btm 01;32
+#.bat 01;32
+# Or if you want to colorize scripts even if they do not have the
+# executable bit actually set.
+#.sh 01;32
+#.csh 01;32
+ # archives or compressed (bright red)
+.tar 01;31
+.tgz 01;31
+.arc 01;31
+.arj 01;31
+.taz 01;31
+.lha 01;31
+.lz4 01;31
+.lzh 01;31
+.lzma 01;31
+.tlz 01;31
+.txz 01;31
+.tzo 01;31
+.t7z 01;31
+.zip 01;31
+.z 01;31
+.Z 01;31
+.dz 01;31
+.gz 01;31
+.lrz 01;31
+.lz 01;31
+.lzo 01;31
+.xz 01;31
+.zst 01;31
+.tzst 01;31
+.bz2 01;31
+.bz 01;31
+.tbz 01;31
+.tbz2 01;31
+.tz 01;31
+.deb 01;31
+.rpm 01;31
+.jar 01;31
+.war 01;31
+.ear 01;31
+.sar 01;31
+.rar 01;31
+.alz 01;31
+.ace 01;31
+.zoo 01;31
+.cpio 01;31
+.7z 01;31
+.rz 01;31
+.cab 01;31
+# audio formats
+.aac 00;36
+.au 00;36
+.flac 00;36
+.m4a 00;36
+.mid 00;36
+.midi 00;36
+.mka 00;36
+.mp3 00;36
+.mpc 00;36
+.ogg 00;36
+.ra 00;36
+.wav 00;36
+# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
+.oga 00;36
+.opus 00;36
+.spx 00;36
+.xspf 00;36
+.mk 35
+*Makefile 35
+.pl 5;36;1;4
diff --git a/zsh/functions.zsh b/zsh/functions.zsh
new file mode 100644
index 0000000..6bd9482
--- /dev/null
+++ b/zsh/functions.zsh
@@ -0,0 +1,27 @@
+function mpod {
+ mcpan pod $1 | $PAGER -c 'set ft=perldoc'
+}
+
+function msrc {
+ mcpan src $1 | $PAGER -c 'set ft=perl'
+}
+
+function scratch {
+ local tmp
+ tmp=$(mktemp --suffix=.$1)
+ vim -c 'set ft='$1 $tmp
+ rm $tmp
+}
+
+function note {
+ local note
+ pushd
+ cd ~/notes
+ note=(${(@f)$(fzf --print-query)})
+ if [[ -f $note[2] ]]; then
+ $VISUAL $note[2]
+ else
+ $VISUAL $note[1]
+ fi
+ popd
+}
diff --git a/zsh/keys.zsh b/zsh/keys.zsh
new file mode 100644
index 0000000..f095954
--- /dev/null
+++ b/zsh/keys.zsh
@@ -0,0 +1,18 @@
+KBDFILE=$ZDOTDIR/zkbd/$TERM-$VENDOR-$OSTYPE
+
+[[ -f $KBDFILE ]] && source $KBDFILE
+
+[[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char
+[[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char
+[[ -n ${key[Backspace]} ]] && bindkey "${key[Backspace]}" backward-delete-char
+[[ -n ${key[Delete]} ]] && bindkey "${key[Delete]}" delete-char
+[[ -n ${key[Up]} ]] && bindkey "${key[Up]}" up-line-or-search
+[[ -n ${key[Down]} ]] && bindkey "${key[Down]}" down-line-or-search
+[[ -n ${key[Home]} ]] && bindkey "${key[Home]}" beginning-of-line
+[[ -n ${key[End]} ]] && bindkey "${key[End]}" end-of-line
+
+# MOUSES
+[[ -n ${key[ScrollUp]} ]] && bindkey "${key[ScrollUp]}" up-history
+[[ -n ${key[ScrollDown]} ]] && bindkey "${key[ScrollDown]}" down-history
+
+bindkey '^R' history-incremental-search-backward
diff --git a/zsh/zkbd/st-256color-unknown-linux-gnu b/zsh/zkbd/st-256color-unknown-linux-gnu
new file mode 100644
index 0000000..482e37d
--- /dev/null
+++ b/zsh/zkbd/st-256color-unknown-linux-gnu
@@ -0,0 +1,28 @@
+typeset -g -A key
+
+key[F1]='^[OP'
+key[F2]='^[OQ'
+key[F3]='^[OR'
+key[F4]='^[OS'
+key[F5]='^[[15~'
+key[F6]='^[[17~'
+key[F7]='^[[18~'
+key[F8]='^[[19~'
+key[F9]='^[[20~'
+key[F10]='^[[21~'
+key[F11]='^[[23~'
+key[F12]='^[[24~'
+key[Backspace]='^?'
+key[Insert]='^[[4h'
+key[Home]='^[[H'
+key[PageUp]='^[[5~'
+key[Delete]='^[[P'
+key[End]='^[[4~'
+key[PageDown]='^[[6~'
+key[Up]='^[[A'
+key[Left]='^[[D'
+key[Down]='^[[B'
+key[Right]='^[[C'
+key[Menu]=''''
+key[ScrollUp]='^Y'
+key[ScrollDown]='^E'