marc
5 years ago
6 changed files with 674 additions and 0 deletions
Unified View
Diff Options
-
32.config/nvim/autoload/lightline/colorscheme/plastic.vim
-
270.config/nvim/colors/plastic.vim
-
33.config/nvim/init.vim
-
16.config/zsh/.zshenv
-
92.config/zsh/.zshrc
-
231.config/zsh/themes/agnoster.zsh-theme
@ -0,0 +1,32 @@ |
|||||
|
" ============================================================================= |
||||
|
" Filename: autoload/lightline/colorscheme/plastic.vim |
||||
|
" Author: Flrn Prz |
||||
|
" License: MIT License |
||||
|
" ============================================================================= |
||||
|
let s:foreground = [ '#a9b2c3', 235 ] |
||||
|
let s:background = [ '#21252b', 235 ] |
||||
|
let s:yellow = [ '#e5c07b', 180 ] |
||||
|
let s:purple = [ '#af98e6', 170 ] |
||||
|
let s:red = [ '#e06c75', 204 ] |
||||
|
let s:blue = [ '#61afef', 39 ] |
||||
|
let s:green = [ '#98c379', 114 ] |
||||
|
let s:grey = [ '#abb2bf', 59 ] |
||||
|
|
||||
|
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} |
||||
|
let s:p.normal.left = [ [ s:foreground, s:background ], [ s:green, s:background ] ] |
||||
|
let s:p.normal.right = [ [ s:purple, s:background ], [ s:green, s:background ] ] |
||||
|
let s:p.inactive.right = [ [ s:grey, s:background ], [ s:grey, s:background ] ] |
||||
|
let s:p.inactive.left = [ [ s:grey, s:background ], [ s:grey, s:background ] ] |
||||
|
let s:p.insert.left = [ [ s:background, s:green ], [ s:green, s:background ] ] |
||||
|
let s:p.replace.left = [ [ s:red, s:background ], [ s:red, s:background ] ] |
||||
|
let s:p.visual.left = [ [ s:background, s:purple ], [ s:purple, s:background ] ] |
||||
|
let s:p.normal.middle = [ [ s:foreground, s:background ] ] |
||||
|
let s:p.inactive.middle = [ [ s:grey, s:background ] ] |
||||
|
let s:p.tabline.left = [ [ s:blue, s:grey ] ] |
||||
|
let s:p.tabline.tabsel = [ [ s:foreground, s:background ] ] |
||||
|
let s:p.tabline.middle = [ [ s:foreground, s:background ] ] |
||||
|
let s:p.tabline.right = copy(s:p.normal.right) |
||||
|
let s:p.normal.error = [ [ s:background, s:red ] ] |
||||
|
let s:p.normal.warning = [ [ s:background, s:yellow ] ] |
||||
|
|
||||
|
let g:lightline#colorscheme#plastic#palette = lightline#colorscheme#flatten(s:p) |
@ -0,0 +1,270 @@ |
|||||
|
" Vim Color File |
||||
|
" Name: plastic.vim |
||||
|
" Description: VSCode Plastic theme vim/neovim port |
||||
|
" Author: Florian Prz |
||||
|
" Repository: https://github.com/flrnprz/plastic.vim/ |
||||
|
" License: The MIT License (MIT) |
||||
|
|
||||
|
" Init {{{ |
||||
|
scriptencoding utf-8 |
||||
|
|
||||
|
set background=dark |
||||
|
hi clear |
||||
|
|
||||
|
if exists('syntax_on') |
||||
|
syntax reset |
||||
|
endif |
||||
|
|
||||
|
let g:colors_name = 'plastic' |
||||
|
|
||||
|
" Highlighting function (inspiration from https://github.com/chriskempson/base16-vim) |
||||
|
fun! <sid>hi(group, fg, bg, attr, sp) |
||||
|
if !empty(a:fg) |
||||
|
exec "hi " . a:group . " guifg=" . a:fg.gui . " ctermfg=" . a:fg.cterm256 |
||||
|
endif |
||||
|
if !empty(a:bg) |
||||
|
exec "hi " . a:group . " guibg=" . a:bg.gui . " ctermbg=" . a:bg.cterm256 |
||||
|
endif |
||||
|
if a:attr != "" |
||||
|
exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr |
||||
|
endif |
||||
|
if !empty(a:sp) |
||||
|
exec "hi " . a:group . " guisp=" . a:sp.gui |
||||
|
endif |
||||
|
endfun |
||||
|
"}}} |
||||
|
|
||||
|
" colors definition {{{ |
||||
|
|
||||
|
let s:red = {'gui': '#e06c75', 'cterm256': '204'} |
||||
|
let s:green = { 'gui': '#98c379', 'cterm256': '114'} |
||||
|
let s:yellow = { 'gui': '#e5c07b', 'cterm256': '180'} |
||||
|
let s:whisky = { 'gui': '#d19a66', 'cterm256': '173' } |
||||
|
let s:blue = { 'gui': '#61afef', 'cterm256': '39'} |
||||
|
let s:purple = { 'gui': '#af98e6', 'cterm256': '170'} |
||||
|
let s:aqua = { 'gui': '#56b6c2', 'cterm256': '38'} |
||||
|
let s:white = { 'gui': '#d7d7d7', 'cterm256': '145'} |
||||
|
let s:black = { 'gui': '#181a1f', 'cterm256': '234'} |
||||
|
let s:visual_black = { 'gui': 'NONE', 'cterm256': 'NONE'} |
||||
|
let s:background = {'gui': '#21252b', 'cterm256': '235'} |
||||
|
let s:foreground = {'gui': '#a9b2c3', 'cterm256': '235'} |
||||
|
let s:grey = { 'gui': '#abb2bf', 'cterm256': '59' } |
||||
|
let s:punctuation = { 'gui': '#7c8696', 'cterm256': '238' } |
||||
|
let s:none = {'gui': 'NONE', 'cterm256': 'NONE'} |
||||
|
|
||||
|
" }}} |
||||
|
|
||||
|
"-------------------- |
||||
|
" Syntax Definitions |
||||
|
"-------------------- |
||||
|
" <sid>hi(GROUP, FOREGROUND, BACKGROUND, ATTRIBUTE, SPECIAL) |
||||
|
call <sid>hi('Normal', s:white, s:background, 'none', {}) |
||||
|
|
||||
|
" UI {{{ |
||||
|
call <sid>hi('Cursor', s:none, s:none, 'inverse', {}) |
||||
|
hi link lCursor Cursor |
||||
|
hi link CursorIM Cursor |
||||
|
call <sid>hi('CursorLine', s:white, s:none, 'bold', {}) |
||||
|
call <sid>hi('EndOfBuffer', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('Conceal', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('CursorColumn', s:none, s:blue, 'none', {}) |
||||
|
call <sid>hi('ColorColumn', s:none, s:punctuation, 'none', {}) |
||||
|
call <sid>hi('FoldColumn', s:punctuation, s:background, 'none', {}) |
||||
|
call <sid>hi('SignColumn', s:none, s:background, 'none', {}) |
||||
|
call <sid>hi('VertSplit', s:grey, s:background, 'none', {}) |
||||
|
call <sid>hi('LineNr', s:punctuation, s:background, 'none', {}) |
||||
|
call <sid>hi('CursorLineNr', s:punctuation, s:background, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('DiffAdd', s:black, s:green, 'none', {}) |
||||
|
call <sid>hi('DiffChange', s:black, s:purple, 'none', {}) |
||||
|
call <sid>hi('DiffDelete', s:black, s:red, 'none', {}) |
||||
|
call <sid>hi('DiffText', s:black, s:aqua, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('ErrorMsg', s:red, s:background, 'bold', {}) |
||||
|
call <sid>hi('ModeMsg', s:yellow, s:none, 'bold', {}) |
||||
|
call <sid>hi('MoreMsg', s:aqua, s:none, 'bold', {}) |
||||
|
call <sid>hi('WarningMsg', s:whisky, s:none, 'italic', {}) |
||||
|
call <sid>hi('Noise', s:punctuation, s:none, 'none', {}) |
||||
|
call <sid>hi('NonText', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('Folded', s:grey, s:none, 'none', {}) |
||||
|
call <sid>hi('IncSearch', s:yellow, s:black, 'none', {}) |
||||
|
call <sid>hi('Search', s:yellow, s:background, 'reverse', {}) |
||||
|
|
||||
|
call <sid>hi('Pmenu', s:none, s:black, 'none', {}) |
||||
|
call <sid>hi('PmenuSel', s:black, s:white, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('Question', s:white, s:background, 'bold', {}) |
||||
|
call <sid>hi('MatchParen', s:blue, s:none, 'bold', {}) |
||||
|
call <sid>hi('Directory', s:white, s:background, 'bold', {}) |
||||
|
call <sid>hi('QuickFixLine', s:black, s:yellow, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('SpecialKey', s:purple, s:none, 'none', {}) |
||||
|
call <sid>hi('SpellBad', s:red, s:none, 'undercurl', s:red) |
||||
|
call <sid>hi('SpellCap', s:none, s:none, 'undercurl', {}) |
||||
|
call <sid>hi('SpellLocal', s:none, s:none, 'undercurl', {}) |
||||
|
call <sid>hi('SpellRare', s:none, s:none, 'undercurl', {}) |
||||
|
|
||||
|
call <sid>hi('StatusLine', s:white, s:background, 'none', {}) |
||||
|
call <sid>hi('StatusLineNC', s:white, s:background, 'none', {}) |
||||
|
hi link StatusLineTerm StatusLine |
||||
|
hi link StatusLineTermNC StatusLineNC |
||||
|
|
||||
|
call <sid>hi('TabLine', s:white, s:black, 'none', {}) |
||||
|
hi link TabLineFill TabLine |
||||
|
call <sid>hi('TabLineSel', s:whisky, s:black, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('Title', s:white, s:none, 'none', {}) |
||||
|
call <sid>hi('Visual', s:black, s:white, 'none', {}) |
||||
|
hi link VisualNOS Visual |
||||
|
call <sid>hi('TabLine', s:white, s:black, 'none', {}) |
||||
|
call <sid>hi('WildMenu', s:black, s:white, 'bold', {}) |
||||
|
"}}} |
||||
|
|
||||
|
"---------------------------------------------------- |
||||
|
" Syntax groups and naming convenions |
||||
|
" http://vimdoc.sourceforge.net/htmldoc/syntax.html |
||||
|
"---------------------------------------------------- |
||||
|
" {{{ |
||||
|
call <sid>hi('Comment', s:grey, s:none, 'italic', {}) |
||||
|
|
||||
|
call <sid>hi('Constant', s:aqua, s:none, 'none', {}) |
||||
|
call <sid>hi('String', s:green, s:none, 'none', {}) |
||||
|
hi link Character Constant |
||||
|
hi link Number Constant |
||||
|
hi link Boolean Constant |
||||
|
hi link Float Number |
||||
|
|
||||
|
call <sid>hi('Identifier', s:white, s:none, 'none', {}) |
||||
|
call <sid>hi('Function', s:whisky, s:none, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('Statement', s:red, s:none, 'none', {}) |
||||
|
hi link Conditional Statement |
||||
|
|
||||
|
call <sid>hi('PreProc', s:aqua, s:none, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('Type', s:blue, s:none, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('Special', s:punctuation, s:none, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('Underlined', s:blue, s:none, 'underline', {}) |
||||
|
|
||||
|
call <sid>hi('Ignore', s:none, s:none, 'none', {}) |
||||
|
|
||||
|
call <sid>hi('Error', s:red, s:black, 'undercurl', {}) |
||||
|
|
||||
|
call <sid>hi('Todo', s:aqua, s:none, 'italic', {}) |
||||
|
|
||||
|
"}}} |
||||
|
|
||||
|
"-------------------------- |
||||
|
" Language specific syntax |
||||
|
"-------------------------- |
||||
|
|
||||
|
" HTML {{{ |
||||
|
call <sid>hi('htmlTag', s:punctuation, s:none, 'none', {}) |
||||
|
hi link htmlEndTag htmlTag |
||||
|
call <sid>hi('htmlTagName', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('htmlArg', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('htmlTitle', s:white, s:none, 'none', {}) |
||||
|
"}}} |
||||
|
|
||||
|
" XML {{{ |
||||
|
call <sid>hi('xmlRegion', s:white, s:none, 'none', {}) |
||||
|
hi link xmlTag xmlRegion |
||||
|
call <sid>hi('xmlTagName', s:yellow, s:none, 'none', {}) |
||||
|
call <sid>hi('xmlEndTag', s:punctuation, s:none, 'none', {}) |
||||
|
" }}} |
||||
|
|
||||
|
" Css {{{ |
||||
|
call <sid>hi('cssAttrComma', s:punctuation, s:none, 'none', {}) |
||||
|
call <sid>hi('cssAttributeSelector', s:green, s:none, 'none', {}) |
||||
|
call <sid>hi('cssBraces', s:punctuation, s:none, 'none', {}) |
||||
|
call <sid>hi('cssClassName', s:aqua, s:none, 'none', {}) |
||||
|
call <sid>hi('cssDefinition', s:purple, s:none, 'none', {}) |
||||
|
call <sid>hi('cssFontAttr', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('cssFontDescriptor', s:purple, s:none, 'none', {}) |
||||
|
call <sid>hi('cssFunctionName', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('cssIdentifier', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('cssImportant', s:purple, s:none, 'none', {}) |
||||
|
call <sid>hi('cssInclude', s:white, s:none, 'none', {}) |
||||
|
call <sid>hi('cssIncludeKeyword', s:red, s:none, 'none', {}) |
||||
|
call <sid>hi('cssMediaType', s:aqua, s:none, 'none', {}) |
||||
|
call <sid>hi('cssProp', s:white, s:none, 'none', {}) |
||||
|
call <sid>hi('cssPseudoClassId', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('cssTagName', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('cssSelectorOp', s:purple, s:none, 'none', {}) |
||||
|
call <sid>hi('cssSelectorOp2', s:purple, s:none, 'none', {}) |
||||
|
"}}} |
||||
|
|
||||
|
" Javascript {{{ |
||||
|
call <sid>hi('jsImport', s:red, s:none, 'none', {}) |
||||
|
hi link jsExport jsImport |
||||
|
hi link jsFrom jsImport |
||||
|
hi link jsExportDefault jsExport |
||||
|
hi link jsArrowFunction jsImport |
||||
|
call <sid>hi('jsStorageClass', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('jsClassKeyword', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('jsExtendsKeyword', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('jsThis', s:yellow, s:none, 'none', {}) |
||||
|
"}}} |
||||
|
|
||||
|
" JSX {{{ |
||||
|
" https://github.com/MaxMEllon/vim-jsx-pretty |
||||
|
call <sid>hi('jsxTagName', s:yellow, s:none, 'none', {}) |
||||
|
call <sid>hi('jsxPunct', s:punctuation, s:none, 'none', {}) |
||||
|
call <sid>hi('jsClosePunct', s:punctuation, s:none, 'none', {}) |
||||
|
call <sid>hi('jsxAttrib', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('jsxComponentName', s:blue, s:none, 'none', {}) |
||||
|
hi link jsxCloseString jsClosePunct |
||||
|
"}}} |
||||
|
|
||||
|
" Golang {{{ |
||||
|
call <sid>hi('goDirective', s:aqua, s:none, 'none', {}) |
||||
|
call <sid>hi('goConstants', s:white, s:none, 'none', {}) |
||||
|
call <sid>hi('goDeclaration', s:red, s:none, 'none', {}) |
||||
|
call <sid>hi('goDeclType', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('goBuiltins', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('goFunctionCall', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('goVarAssign', s:white, s:none, 'none', {}) |
||||
|
hi link goVarDefs goVarAssign |
||||
|
"}}} |
||||
|
|
||||
|
" Markdown {{{ |
||||
|
call <sid>hi('markdownCode', s:green, s:none, 'none', {}) |
||||
|
hi link markdownCodeBlock markdownCode |
||||
|
hi link markdownCodeDelimiter markdownCode |
||||
|
call <sid>hi('markdownHeadingDelimiter', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownRule', s:punctuation, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownHeadingRule', s:punctuation, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownH1', s:whisky, s:none, 'none', {}) |
||||
|
hi link markdownH2 markdownH1 |
||||
|
hi link markdownH3 markdownH1 |
||||
|
hi link markdownH4 markdownH1 |
||||
|
hi link markdownH5 markdownH1 |
||||
|
hi link markdownH6 markdownH1 |
||||
|
call <sid>hi('markdownIdDelimiter', s:purple, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownId', s:purple, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownBlockquote', s:aqua, s:none, 'none', {}) |
||||
|
call <sid>hi('markdowItalic', s:none, s:none, 'italic', {}) |
||||
|
call <sid>hi('markdownBold', s:none, s:none, 'bold', {}) |
||||
|
call <sid>hi('markdownListMarker', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownOrderedListMarker', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownIdDeclaration', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownLinkText', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownLinkDelimiter', s:white, s:none, 'none', {}) |
||||
|
call <sid>hi('markdownUrl', s:purple, s:none, 'none', {}) |
||||
|
|
||||
|
"}}} |
||||
|
|
||||
|
" NERDTree {{{ |
||||
|
call <sid>hi('NERDTreeDir', s:blue, s:none, 'none', {}) |
||||
|
call <sid>hi('NERDTreeDirSlash', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('NERDTreeFile', s:aqua, s:none, 'none', {}) |
||||
|
call <sid>hi('NERDTreeExecFile', s:green, s:none, 'none', {}) |
||||
|
call <sid>hi('NERDTreeOpenable', s:whisky, s:none, 'none', {}) |
||||
|
call <sid>hi('NERDTreeClosable', s:red, s:none, 'none', {}) |
||||
|
call <sid>hi('NERDTreeCWD', s:blue, s:none, 'bold', {}) |
||||
|
call <sid>hi('NERDTreeUp', s:punctuation, s:none, 'none', {}) |
||||
|
" }}} |
||||
|
|
||||
|
" vim: fdm=marker ts=2 sts=2 sw=2 fdl=0: |
@ -0,0 +1,33 @@ |
|||||
|
" Um vim-plug zu installieren: |
||||
|
" curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |
||||
|
" Usage :PlugInstall [name] |
||||
|
call plug#begin() |
||||
|
Plug 'itchyny/lightline.vim' |
||||
|
"Plug 'ap/vim-css-color' " doesn't work on all files |
||||
|
call plug#end() |
||||
|
|
||||
|
" themes sind im Unterordner ./colors/ |
||||
|
colorscheme plastic |
||||
|
"set t_Co=256 |
||||
|
set termguicolors |
||||
|
|
||||
|
set number " add line numbers |
||||
|
set nocompatible " disable compatibility to vi |
||||
|
set tabstop=4 " number of columns by tab |
||||
|
set softtabstop=4 " see multiple spaces as tab |
||||
|
set expandtab " converts tab to whitespaces |
||||
|
set shiftwidth=4 " width for autoindents |
||||
|
set hlsearch " highlight search results |
||||
|
set showmatch " show matching brackets |
||||
|
set mouse=v " middle-click paste with mouse |
||||
|
set ignorecase " case insensitive matching |
||||
|
set wildmode=longest,list " bash-like tab completions |
||||
|
"set cc=80 " 80 column border for good coding style |
||||
|
syntax on " syntax highlighting |
||||
|
|
||||
|
augroup numbertoggle |
||||
|
autocmd! |
||||
|
autocmd BufEnter,FocusGained,InsertLeave * set relativenumber |
||||
|
autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber |
||||
|
augroup END |
||||
|
|
@ -0,0 +1,16 @@ |
|||||
|
FREECIV_DATA_PATH=$HOME/.config/freeciv |
||||
|
|
||||
|
# don't load default zshrc |
||||
|
setopt no_global_rcs |
||||
|
|
||||
|
# environment variables |
||||
|
export XDG_CONFIG_HOME="$HOME/.config" |
||||
|
|
||||
|
# move zsh config to $XDG_CONFIG_HOME |
||||
|
export ZDOTDIR="$XDG_CONFIG_HOME/zsh" |
||||
|
|
||||
|
# aliases |
||||
|
# to temporary disable them in case they override defaults, |
||||
|
# use \.. , e.g. \ls |
||||
|
alias ls="ls -lah --color" |
||||
|
alias dot='/usr/bin/git --git-dir=$HOME/dotfiles/ --work-tree=$HOME' |
@ -0,0 +1,92 @@ |
|||||
|
#!/bin/zsh |
||||
|
DEFAULT_USER=marc #für den Promot wird der user ausgeblendet, wenn default erkannt ist |
||||
|
|
||||
|
# -------------------------------------- |
||||
|
# Environment |
||||
|
# -------------------------------------- |
||||
|
|
||||
|
export EDITOR=nvim |
||||
|
export VISUAL=nvim |
||||
|
|
||||
|
# -------------------------------------- |
||||
|
# Prompt |
||||
|
# -------------------------------------- |
||||
|
|
||||
|
setopt PROMPT_SUBST # erlaubt Funktionen im Prompt |
||||
|
|
||||
|
# -------------------------------------- |
||||
|
# History |
||||
|
# -------------------------------------- |
||||
|
HISTFILE=$ZDOTDIR/zhistory |
||||
|
setopt APPEND_HISTORY # append hostory instead of overwriting |
||||
|
HISTSIZE=1200 # notwendig, damit HIST_EXPIRE_DUPS_FIRST funktioniert |
||||
|
SAVEHIST=1000 |
||||
|
setopt HIST_EXPIRE_DUPS_FIRST # entfernt erst Duplikate, wenn SAVEHIST überläuft |
||||
|
setopt EXTENDED_HISTORY # speichert Zeitstempel und Dauer |
||||
|
setopt SHARE_HISTORY # share history across terms |
||||
|
|
||||
|
# -------------------------------------- |
||||
|
# Keybindings |
||||
|
# -------------------------------------- |
||||
|
|
||||
|
# create a zkbd compatible hash |
||||
|
# to add other keys to this hash, see: man 5 terminfo |
||||
|
|
||||
|
typeset -A key |
||||
|
|
||||
|
key[Home]="$terminfo[khome]" |
||||
|
key[End]="$terminfo[kend]" |
||||
|
key[Insert]="$terminfo[kich1]" |
||||
|
key[Backspace]="$terminfo[kbs]" |
||||
|
key[Delete]="$terminfo[kdch1]" |
||||
|
key[Up]="$terminfu[kcuu1]" |
||||
|
key[Down]="$terminfo[kcud1]" |
||||
|
key[Left]="$terminfo[kcub1]" |
||||
|
key[Right]="$terminfo[kcuf1]" |
||||
|
key[PageUp]="$terminfo[kpp]" |
||||
|
key[PageDown]="$terminfo[knp]" |
||||
|
|
||||
|
# setup key accordingly |
||||
|
[[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" beginning-of-line |
||||
|
[[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line |
||||
|
[[ -n "${key[Insert]}" ]] && bindkey "$key[Insert]}" overwrite-mode |
||||
|
[[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" delete-char |
||||
|
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-history |
||||
|
[[ -n "${key[Down]}" ]] && bindkey "${key[Down]}" down-line-or-history |
||||
|
[[ -n "${key[Left]}" ]] && bindkey "${key[Left]}" backward-char |
||||
|
[[ -n "${key[Right]}" ]] && bindkey "${key[Right]}" forward-char |
||||
|
[[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" beginning-of-buffer-or-history |
||||
|
[[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" end-of-buffer-or-history |
||||
|
|
||||
|
bindkey "^R" history-incremental-search-backward |
||||
|
|
||||
|
# Finally, make sure the terminal is in application mode, when zle is |
||||
|
# active. Only then are the values from $erminfo valid. |
||||
|
|
||||
|
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then |
||||
|
function zle-line-init () { |
||||
|
echoti smkx |
||||
|
} |
||||
|
function zle-line-finish () { |
||||
|
echoti rmkx |
||||
|
} |
||||
|
zle -N zle-line-init |
||||
|
zle -N zle-line-finish |
||||
|
fi |
||||
|
|
||||
|
# -------------------------------------- |
||||
|
# Plugins |
||||
|
# -------------------------------------- |
||||
|
|
||||
|
PLUGINS=$ZDOTDIR/plugins/ |
||||
|
|
||||
|
for plugin in $PLUGINS*.zsh |
||||
|
do |
||||
|
source $plugin |
||||
|
done |
||||
|
|
||||
|
# -------------------------------------- |
||||
|
# Themes |
||||
|
# -------------------------------------- |
||||
|
|
||||
|
source $ZDOTDIR/themes/agnoster.zsh-theme |
@ -0,0 +1,231 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
# vim:ft=zsh ts=2 sw=2 sts=2 |
||||
|
# |
||||
|
# agnoster's Theme - https://gist.github.com/3712874 |
||||
|
# A Powerline-inspired theme for ZSH |
||||
|
# |
||||
|
# # README |
||||
|
# |
||||
|
# In order for this theme to render correctly, you will need a |
||||
|
# [Powerline-patched font](https://github.com/Lokaltog/powerline-fonts). |
||||
|
# Make sure you have a recent version: the code points that Powerline |
||||
|
# uses changed in 2012, and older versions will display incorrectly, |
||||
|
# in confusing ways. |
||||
|
# |
||||
|
# In addition, I recommend the |
||||
|
# [Solarized theme](https://github.com/altercation/solarized/) and, if you're |
||||
|
# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app - |
||||
|
# it has significantly better color fidelity. |
||||
|
# |
||||
|
# # Goals |
||||
|
# |
||||
|
# The aim of this theme is to only show you *relevant* information. Like most |
||||
|
# prompts, it will only show git information when in a git working directory. |
||||
|
# However, it goes a step further: everything from the current user and |
||||
|
# hostname to whether the last call exited with an error to whether background |
||||
|
# jobs are running in this shell will all be displayed automatically when |
||||
|
# appropriate. |
||||
|
|
||||
|
### Segment drawing |
||||
|
# A few utility functions to make it easy and re-usable to draw segmented prompts |
||||
|
|
||||
|
CURRENT_BG='NONE' |
||||
|
|
||||
|
# Special Powerline characters |
||||
|
|
||||
|
() { |
||||
|
local LC_ALL="" LC_CTYPE="en_US.UTF-8" |
||||
|
# NOTE: This segment separator character is correct. In 2012, Powerline changed |
||||
|
# the code points they use for their special characters. This is the new code point. |
||||
|
# If this is not working for you, you probably have an old version of the |
||||
|
# Powerline-patched fonts installed. Download and install the new version. |
||||
|
# Do not submit PRs to change this unless you have reviewed the Powerline code point |
||||
|
# history and have new information. |
||||
|
# This is defined using a Unicode escape sequence so it is unambiguously readable, regardless of |
||||
|
# what font the user is viewing this source code in. Do not replace the |
||||
|
# escape sequence with a single literal character. |
||||
|
# Do not change this! Do not make it '\u2b80'; that is the old, wrong code point. |
||||
|
SEGMENT_SEPARATOR=$'\ue0b0' |
||||
|
} |
||||
|
|
||||
|
# Begin a segment |
||||
|
# Takes two arguments, background and foreground. Both can be omitted, |
||||
|
# rendering default background/foreground. |
||||
|
prompt_segment() { |
||||
|
local bg fg |
||||
|
[[ -n $1 ]] && bg="%K{$1}" || bg="%k" |
||||
|
[[ -n $2 ]] && fg="%F{$2}" || fg="%f" |
||||
|
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then |
||||
|
echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} " |
||||
|
else |
||||
|
echo -n "%{$bg%}%{$fg%} " |
||||
|
fi |
||||
|
CURRENT_BG=$1 |
||||
|
[[ -n $3 ]] && echo -n $3 |
||||
|
} |
||||
|
|
||||
|
# End the prompt, closing any open segments |
||||
|
prompt_end() { |
||||
|
if [[ -n $CURRENT_BG ]]; then |
||||
|
echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" |
||||
|
else |
||||
|
echo -n "%{%k%}" |
||||
|
fi |
||||
|
echo -n "%{%f%}" |
||||
|
CURRENT_BG='' |
||||
|
} |
||||
|
|
||||
|
### Prompt components |
||||
|
# Each component will draw itself, and hide itself if no information needs to be shown |
||||
|
|
||||
|
# Context: user@hostname (who am I and where am I) |
||||
|
prompt_context() { |
||||
|
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then |
||||
|
prompt_segment black default "%(!.%{%F{yellow}%}.)$USER" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
# Git: branch/detached head, dirty status |
||||
|
prompt_git() { |
||||
|
(( $+commands[git] )) || return |
||||
|
local PL_BRANCH_CHAR |
||||
|
() { |
||||
|
local LC_ALL="" LC_CTYPE="en_US.UTF-8" |
||||
|
PL_BRANCH_CHAR=$'\ue0a0' # |
||||
|
} |
||||
|
local ref dirty mode repo_path |
||||
|
repo_path=$(git rev-parse --git-dir 2>/dev/null) |
||||
|
|
||||
|
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then |
||||
|
dirty=$(parse_git_dirty) |
||||
|
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git rev-parse --short HEAD 2> /dev/null)" |
||||
|
if [[ -n $dirty ]]; then |
||||
|
prompt_segment yellow black |
||||
|
else |
||||
|
prompt_segment green black |
||||
|
fi |
||||
|
|
||||
|
if [[ -e "${repo_path}/BISECT_LOG" ]]; then |
||||
|
mode=" <B>" |
||||
|
elif [[ -e "${repo_path}/MERGE_HEAD" ]]; then |
||||
|
mode=" >M<" |
||||
|
elif [[ -e "${repo_path}/rebase" || -e "${repo_path}/rebase-apply" || -e "${repo_path}/rebase-merge" || -e "${repo_path}/../.dotest" ]]; then |
||||
|
mode=" >R>" |
||||
|
fi |
||||
|
|
||||
|
setopt promptsubst |
||||
|
autoload -Uz vcs_info |
||||
|
|
||||
|
zstyle ':vcs_info:*' enable git |
||||
|
zstyle ':vcs_info:*' get-revision true |
||||
|
zstyle ':vcs_info:*' check-for-changes true |
||||
|
zstyle ':vcs_info:*' stagedstr '✚' |
||||
|
zstyle ':vcs_info:*' unstagedstr '●' |
||||
|
zstyle ':vcs_info:*' formats ' %u%c' |
||||
|
zstyle ':vcs_info:*' actionformats ' %u%c' |
||||
|
vcs_info |
||||
|
echo -n "${ref/refs\/heads\//$PL_BRANCH_CHAR }${vcs_info_msg_0_%% }${mode}" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
prompt_bzr() { |
||||
|
(( $+commands[bzr] )) || return |
||||
|
if (bzr status >/dev/null 2>&1); then |
||||
|
status_mod=`bzr status | head -n1 | grep "modified" | wc -m` |
||||
|
status_all=`bzr status | head -n1 | wc -m` |
||||
|
revision=`bzr log | head -n2 | tail -n1 | sed 's/^revno: //'` |
||||
|
if [[ $status_mod -gt 0 ]] ; then |
||||
|
prompt_segment yellow black |
||||
|
echo -n "bzr@"$revision "✚ " |
||||
|
else |
||||
|
if [[ $status_all -gt 0 ]] ; then |
||||
|
prompt_segment yellow black |
||||
|
echo -n "bzr@"$revision |
||||
|
|
||||
|
else |
||||
|
prompt_segment green black |
||||
|
echo -n "bzr@"$revision |
||||
|
fi |
||||
|
fi |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
prompt_hg() { |
||||
|
(( $+commands[hg] )) || return |
||||
|
local rev status |
||||
|
if $(hg id >/dev/null 2>&1); then |
||||
|
if $(hg prompt >/dev/null 2>&1); then |
||||
|
if [[ $(hg prompt "{status|unknown}") = "?" ]]; then |
||||
|
# if files are not added |
||||
|
prompt_segment red white |
||||
|
st='±' |
||||
|
elif [[ -n $(hg prompt "{status|modified}") ]]; then |
||||
|
# if any modification |
||||
|
prompt_segment yellow black |
||||
|
st='±' |
||||
|
else |
||||
|
# if working copy is clean |
||||
|
prompt_segment green black |
||||
|
fi |
||||
|
echo -n $(hg prompt "☿ {rev}@{branch}") $st |
||||
|
else |
||||
|
st="" |
||||
|
rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g') |
||||
|
branch=$(hg id -b 2>/dev/null) |
||||
|
if `hg st | grep -q "^\?"`; then |
||||
|
prompt_segment red black |
||||
|
st='±' |
||||
|
elif `hg st | grep -q "^[MA]"`; then |
||||
|
prompt_segment yellow black |
||||
|
st='±' |
||||
|
else |
||||
|
prompt_segment green black |
||||
|
fi |
||||
|
echo -n "☿ $rev@$branch" $st |
||||
|
fi |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
# Dir: current working directory |
||||
|
prompt_dir() { |
||||
|
prompt_segment blue black '%~' |
||||
|
} |
||||
|
|
||||
|
# Virtualenv: current working virtualenv |
||||
|
prompt_virtualenv() { |
||||
|
local virtualenv_path="$VIRTUAL_ENV" |
||||
|
if [[ -n $virtualenv_path && -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; then |
||||
|
prompt_segment blue black "(`basename $virtualenv_path`)" |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
# Status: |
||||
|
# - was there an error |
||||
|
# - am I root |
||||
|
# - are there background jobs? |
||||
|
prompt_status() { |
||||
|
local symbols |
||||
|
symbols=() |
||||
|
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" |
||||
|
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" |
||||
|
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" |
||||
|
|
||||
|
[[ -n "$symbols" ]] && prompt_segment black default "$symbols" |
||||
|
} |
||||
|
|
||||
|
## Main prompt |
||||
|
build_prompt() { |
||||
|
RETVAL=$? |
||||
|
prompt_status |
||||
|
prompt_virtualenv |
||||
|
prompt_context |
||||
|
prompt_dir |
||||
|
prompt_git |
||||
|
prompt_bzr |
||||
|
prompt_hg |
||||
|
prompt_end |
||||
|
} |
||||
|
|
||||
|
PROMPT='%{%f%b%k%}$(build_prompt) ' |
||||
|
|