Last active
June 22, 2026 23:24
-
-
Save FdelMazo/868b261c064e8c0c0e7862f968c4a389 to your computer and use it in GitHub Desktop.
Append me to .zshrc (and others)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # nord theme | |
| background #2E3440 | |
| foreground #D8DEE9 | |
| # cursor #7fc1c9 | |
| color0 #3B4252 | |
| color8 #4C566A | |
| color1 #BF616A | |
| color9 #BF616A | |
| color2 #A3BE8C | |
| color10 #A3BE8C | |
| color3 #EBCB8B | |
| color11 #EBCB8B | |
| color4 #81A1C1 | |
| color12 #81A1C1 | |
| color5 #B48EAD | |
| color13 #B48EAD | |
| color6 #88C0D0 | |
| color14 #8FBCBB | |
| color7 #E5E9F0 | |
| color15 #ECEFF4 | |
| selection_foreground #3a3d4b | |
| selection_background #eaf2f1 | |
| confirm_os_window_close 0 | |
| # scroll to prompt con pgup+pdown | |
| map page_up scroll_to_prompt -1 | |
| map page_down scroll_to_prompt 1 | |
| # ctrl+f to search | |
| map ctrl+f combine : show_scrollback : send_text normal,application ? | |
| # block select with control (useful for vim) | |
| mouse_map ctrl+left press ungrabbed mouse_selection rectangle |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [user] | |
| email = fdelmazo@fi.uba.ar | |
| name = Federico del Mazo | |
| signingKey = /home/delmazo/.ssh/id_rsa.pub | |
| [init] | |
| defaultBranch = main | |
| [core] | |
| editor = vim | |
| [gpg] | |
| format = ssh | |
| [commit] | |
| gpgsign = true | |
| [pull] | |
| rebase = true | |
| [merge] | |
| conflictstyle = zdiff3 | |
| [rebase] | |
| autosquash = true | |
| [push] | |
| default = current | |
| [branch] | |
| sort = -committerdate | |
| [diff] | |
| algorithm = histogram | |
| colormoved = default | |
| colormovedws = allow-indentation-change | |
| [alias] | |
| # To sync a PR use plain `git pull` | |
| pr = "!f() { \ | |
| git fetch origin pull/$1/head:PR#$1 && \ | |
| git switch PR#$1 && \ | |
| git config branch.PR#$1.remote origin && \ | |
| git config branch.PR#$1.merge refs/pull/$1/head; \ | |
| }; f" | |
| # git clone https://github.com/keis/git-fixup.git && cd git-fixup && sudo make install && cd .. && rm -rf git-fixup | |
| [fixup] | |
| commit = true | |
| rebase = true | |
| menu = fzf --height '60%' \ | |
| --bind 'tab:toggle-preview' \ | |
| --preview 'git show --color {+1}' \ | |
| --preview-window=up:80% \ | |
| --prompt 'Select commit: ' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Generated by Powerlevel10k configuration wizard on 2026-02-09 at 13:20 -03. | |
| # Based on romkatv/powerlevel10k/config/p10k-lean.zsh, checksum 02674. | |
| # Wizard options: nerdfont-v3 + powerline, small icons, unicode, lean, 24h time, 1 line, | |
| # sparse, few icons, concise, instant_prompt=verbose. | |
| # Type `p10k configure` to generate another config. | |
| # | |
| # Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate | |
| # your own config based on it. | |
| # | |
| # Tip: Looking for a nice color? Here's a one-liner to print colormap. | |
| # | |
| # for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done | |
| # Temporarily change options. | |
| 'builtin' 'local' '-a' 'p10k_config_opts' | |
| [[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') | |
| [[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') | |
| [[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') | |
| 'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' | |
| () { | |
| emulate -L zsh -o extended_glob | |
| # Unset all configuration options. This allows you to apply configuration changes without | |
| # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. | |
| unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' | |
| # Zsh >= 5.1 is required. | |
| [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return | |
| # The list of segments shown on the left. Fill it with the most important segments. | |
| typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( | |
| dir # current directory | |
| vcs # git status | |
| prompt_char # prompt symbol | |
| ) | |
| # The list of segments shown on the right. Fill it with less important segments. | |
| # Right prompt on the last prompt line (where you are typing your commands) gets | |
| # automatically hidden when the input line reaches it. Right prompt above the | |
| # last prompt line gets hidden if it would overlap with left prompt. | |
| typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( | |
| command_execution_time # duration of the last command | |
| time # current time | |
| ) | |
| # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. | |
| typeset -g POWERLEVEL9K_MODE=nerdfont-v3 | |
| # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid | |
| # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. | |
| typeset -g POWERLEVEL9K_ICON_PADDING=none | |
| # Basic style options that define the overall look of your prompt. You probably don't want to | |
| # change them. | |
| typeset -g POWERLEVEL9K_BACKGROUND= # transparent background | |
| typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace | |
| typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space | |
| typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol | |
| # When set to true, icons appear before content on both sides of the prompt. When set | |
| # to false, icons go after content. If empty or not set, icons go before content in the left | |
| # prompt and after content in the right prompt. | |
| # | |
| # You can also override it for a specific segment: | |
| # | |
| # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false | |
| # | |
| # Or for a specific segment in specific state: | |
| # | |
| # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false | |
| typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true | |
| # Add an empty line before each prompt. | |
| typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true | |
| # Connect left prompt lines with these symbols. | |
| typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX= | |
| typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX= | |
| typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX= | |
| # Connect right prompt lines with these symbols. | |
| typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX= | |
| typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX= | |
| typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX= | |
| # The left end of left prompt. | |
| typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= | |
| # The right end of right prompt. | |
| typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL= | |
| # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll | |
| # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and | |
| # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below. | |
| typeset -g POWERLEVEL9K_SHOW_RULER=true | |
| typeset -g POWERLEVEL9K_RULER_CHAR='─' # reasonable alternative: '·' | |
| typeset -g POWERLEVEL9K_RULER_FOREGROUND=242 | |
| # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─' | |
| # to make it easier to see the alignment between left and right prompt and to separate prompt | |
| # from command output. It serves the same purpose as ruler (see above) without increasing | |
| # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false | |
| # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact | |
| # prompt. | |
| typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' | |
| if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then | |
| # The color of the filler. | |
| typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242 | |
| # Add a space between the end of left prompt and the filler. | |
| typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' ' | |
| # Add a space between the filler and the start of right prompt. | |
| typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' ' | |
| # Start filler from the edge of the screen if there are no left segments on the first line. | |
| typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' | |
| # End filler on the edge of the screen if there are no right segments on the first line. | |
| typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' | |
| fi | |
| ################################[ prompt_char: prompt symbol ]################################ | |
| # Green prompt symbol if the last command succeeded. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 | |
| # Red prompt symbol if the last command failed. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=203 | |
| # Default prompt symbol. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='$' | |
| # Prompt symbol in command vi mode. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' | |
| # Prompt symbol in visual vi mode. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' | |
| # Prompt symbol in overwrite vi mode. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true | |
| # No line terminator if prompt_char is the last segment. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='' | |
| # No line introducer if prompt_char is the first segment. | |
| typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= | |
| ##################################[ dir: current directory ]################################## | |
| # Default current directory color. | |
| typeset -g POWERLEVEL9K_DIR_FOREGROUND=39 | |
| # If directory is too long, shorten some of its segments to the shortest possible unique | |
| # prefix. The shortened directory can be tab-completed to the original. | |
| typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_last | |
| # Replace removed segment suffixes with this symbol. | |
| typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= | |
| # Color of the shortened directory segments. | |
| typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=39 | |
| # Color of the anchor directory segments. Anchor segments are never shortened. The first | |
| # segment is always an anchor. | |
| typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39 | |
| # Display anchor directory segments in bold. | |
| typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=false | |
| # Don't shorten directories that contain any of these files. They are anchors. | |
| local anchor_files=( | |
| .bzr | |
| .citc | |
| .git | |
| .hg | |
| .node-version | |
| .python-version | |
| .go-version | |
| .ruby-version | |
| .lua-version | |
| .java-version | |
| .perl-version | |
| .php-version | |
| .tool-versions | |
| .mise.toml | |
| .shorten_folder_marker | |
| .svn | |
| .terraform | |
| CVS | |
| Cargo.toml | |
| composer.json | |
| go.mod | |
| package.json | |
| stack.yaml | |
| ) | |
| typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" | |
| # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains | |
| # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is | |
| # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) | |
| # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers | |
| # and other directories don't. | |
| # | |
| # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer. | |
| # This moves the truncation point to the right (positive offset) or to the left (negative offset) | |
| # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" | |
| # respectively. | |
| typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false | |
| # Don't shorten this many last directory segments. They are anchors. | |
| typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=10 | |
| # Shorten directory if it's longer than this even if there is space for it. The value can | |
| # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, | |
| # directory will be shortened only when prompt doesn't fit or when other parameters demand it | |
| # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). | |
| # If set to `0`, directory will always be shortened to its minimum length. | |
| typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 | |
| # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this | |
| # many columns for typing commands. | |
| typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 | |
| # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least | |
| # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. | |
| typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 | |
| # If set to true, embed a hyperlink into the directory. Useful for quickly | |
| # opening a directory in the file manager simply by clicking the link. | |
| # Can also be handy when the directory is shortened, as it allows you to see | |
| # the full directory that was used in previous commands. | |
| typeset -g POWERLEVEL9K_DIR_HYPERLINK=false | |
| # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON | |
| # and POWERLEVEL9K_DIR_CLASSES below. | |
| typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 | |
| # The default icon shown next to non-writable and non-existent directories when | |
| # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. | |
| # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' | |
| # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different | |
| # directories. It must be an array with 3 * N elements. Each triplet consists of: | |
| # | |
| # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with | |
| # extended_glob option enabled. | |
| # 2. Directory class for the purpose of styling. | |
| # 3. An empty string. | |
| # | |
| # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. | |
| # | |
| # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories | |
| # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively. | |
| # | |
| # For example, given these settings: | |
| # | |
| # typeset -g POWERLEVEL9K_DIR_CLASSES=( | |
| # '~/work(|/*)' WORK '' | |
| # '~(|/*)' HOME '' | |
| # '*' DEFAULT '') | |
| # | |
| # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one | |
| # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or | |
| # WORK_NON_EXISTENT. | |
| # | |
| # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an | |
| # option to define custom colors and icons for different directory classes. | |
| # | |
| # # Styling for WORK. | |
| # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐' | |
| # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31 | |
| # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103 | |
| # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39 | |
| # | |
| # # Styling for WORK_NOT_WRITABLE. | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐' | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31 | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103 | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39 | |
| # | |
| # # Styling for WORK_NON_EXISTENT. | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐' | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31 | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103 | |
| # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39 | |
| # | |
| # If a styling parameter isn't explicitly defined for some class, it falls back to the classless | |
| # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls | |
| # back to POWERLEVEL9K_DIR_FOREGROUND. | |
| # | |
| typeset -g POWERLEVEL9K_DIR_CLASSES=() | |
| # Custom prefix. | |
| # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin ' | |
| #####################################[ vcs: git status ]###################################### | |
| # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon. | |
| typeset -g POWERLEVEL9K_VCS_BRANCH_ICON= | |
| # Untracked files icon. It's really a question mark, your font isn't broken. | |
| # Change the value of this parameter to show a different icon. | |
| typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' | |
| # Formatter for Git status. | |
| # | |
| # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. | |
| # | |
| # You can edit the function to customize how Git status looks. | |
| # | |
| # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: | |
| # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. | |
| function my_git_formatter() { | |
| emulate -L zsh | |
| if [[ -n $P9K_CONTENT ]]; then | |
| # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from | |
| # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. | |
| typeset -g my_git_format=$P9K_CONTENT | |
| return | |
| fi | |
| if (( $1 )); then | |
| # Styling for up-to-date Git status. | |
| local meta='%209F' # default foreground | |
| local clean='%209F' # green foreground | |
| local modified='%209F' # yellow foreground | |
| local untracked='%209F' # blue foreground | |
| local conflicted='%209F' # red foreground | |
| else | |
| # Styling for incomplete and stale Git status. | |
| local meta='%244F' # grey foreground | |
| local clean='%244F' # grey foreground | |
| local modified='%244F' # grey foreground | |
| local untracked='%244F' # grey foreground | |
| local conflicted='%244F' # grey foreground | |
| fi | |
| local branch | |
| local res | |
| if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then | |
| local branch=${(V)VCS_STATUS_LOCAL_BRANCH} | |
| # If local branch name is at most 32 characters long, show it in full. | |
| # Otherwise show the first 12 … the last 12. | |
| # Tip: To always show local branch name in full without truncation, delete the next line. | |
| # (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line | |
| branch="%200F${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" | |
| fi | |
| if [[ -n $VCS_STATUS_TAG | |
| # Show tag only if not on a branch. | |
| # Tip: To always show tag, delete the next line. | |
| && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line | |
| ]]; then | |
| local tag=${(V)VCS_STATUS_TAG} | |
| # If tag name is at most 32 characters long, show it in full. | |
| # Otherwise show the first 12 … the last 12. | |
| # Tip: To always show tag name in full without truncation, delete the next line. | |
| (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line | |
| res+="${meta}#${clean}${tag//\%/%%}" | |
| fi | |
| # Display the current Git commit if there is no branch and no tag. | |
| # Tip: To always display the current Git commit, delete the next line. | |
| [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line | |
| res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" | |
| # Show tracking branch name if it differs from local branch. | |
| if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then | |
| res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" | |
| fi | |
| # Display "wip" if the latest commit's summary contains "wip" or "WIP". | |
| if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then | |
| res+="${modified}wip" | |
| fi | |
| if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then | |
| # ⇣42 if behind the remote. | |
| (( VCS_STATUS_COMMITS_BEHIND )) && res+="${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" | |
| # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. | |
| (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " | |
| (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" | |
| elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then | |
| # Tip: Uncomment the next line to display '=' if up to date with the remote. | |
| # res+=" ${clean}=" | |
| fi | |
| # ⇠42 if behind the push remote. | |
| (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+="${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" | |
| (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " | |
| # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. | |
| (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" | |
| # *42 if have stashes. | |
| (( VCS_STATUS_STASHES )) && res+="${clean}*${VCS_STATUS_STASHES}" | |
| # 'merge' if the repo is in an unusual state. | |
| [[ -n $VCS_STATUS_ACTION ]] && res+="${conflicted}${VCS_STATUS_ACTION}" | |
| # ~42 if have merge conflicts. | |
| (( VCS_STATUS_NUM_CONFLICTED )) && res+="${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" | |
| # +42 if have staged changes. | |
| (( VCS_STATUS_NUM_STAGED )) && res+="${modified}+${VCS_STATUS_NUM_STAGED}" | |
| # !42 if have unstaged changes. | |
| (( VCS_STATUS_NUM_UNSTAGED )) && res+="${modified}!${VCS_STATUS_NUM_UNSTAGED}" | |
| # ?42 if have untracked files. It's really a question mark, your font isn't broken. | |
| # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. | |
| # Remove the next line if you don't want to see untracked files at all. | |
| (( VCS_STATUS_NUM_UNTRACKED )) && res+="${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" | |
| # "─" if the number of unstaged files is unknown. This can happen due to | |
| # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower | |
| # than the number of files in the Git index, or due to bash.showDirtyState being set to false | |
| # in the repository config. The number of staged and untracked files may also be unknown | |
| # in this case. | |
| (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+="${modified}─" | |
| typeset -g my_git_format="$branch${res:+%209F [$res]}" | |
| } | |
| functions -M my_git_formatter 2>/dev/null | |
| # Don't count the number of unstaged, untracked and conflicted files in Git repositories with | |
| # more than this many files in the index. Negative value means infinity. | |
| # | |
| # If you are working in Git repositories with tens of millions of files and seeing performance | |
| # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output | |
| # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's | |
| # config: `git config bash.showDirtyState false`. | |
| typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 | |
| # Don't show Git status in prompt for repositories whose workdir matches this pattern. | |
| # For example, if set to '~', the Git repository at $HOME/.git will be ignored. | |
| # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'. | |
| typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' | |
| # Disable the default Git status formatting. | |
| typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true | |
| # Install our own Git status formatter. | |
| typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}' | |
| typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}' | |
| # Enable counters for staged, unstaged, etc. | |
| typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 | |
| # Icon color. | |
| typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76 | |
| typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244 | |
| # Custom icon. | |
| typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION= | |
| # Custom prefix. | |
| # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon ' | |
| # Show status of repositories of these types. You can add svn and/or hg if you are | |
| # using them. If you do, your prompt may become slow even when your current directory | |
| # isn't in an svn or hg repository. | |
| typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) | |
| # These settings are used for repositories other than Git or when gitstatusd fails and | |
| # Powerlevel10k has to fall back to using vcs_info. | |
| typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 | |
| typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76 | |
| typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178 | |
| ###################[ command_execution_time: duration of the last command ]################### | |
| # Show duration of the last command if takes at least this many seconds. | |
| typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 | |
| # Show this many fractional digits. Zero means round to seconds. | |
| typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 | |
| # Execution time color. | |
| typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=226 | |
| # Duration format: 1d 2h 3m 4s. | |
| typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' | |
| # Custom icon. | |
| typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION= | |
| # Custom prefix. | |
| # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook ' | |
| typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_SUFFIX=' %f@' | |
| ####################################[ time: current time ]#################################### | |
| # Current time color. | |
| typeset -g POWERLEVEL9K_TIME_FOREGROUND=226 | |
| # Format for the current time: 09:51:02. See `man 3 strftime`. | |
| typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' | |
| # If set to true, time will update when you hit enter. This way prompts for the past | |
| # commands will contain the start times of their commands as opposed to the default | |
| # behavior where they contain the end times of their preceding commands. | |
| typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false | |
| # Custom icon. | |
| typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION= | |
| # Custom prefix. | |
| # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat ' | |
| # Example of a user-defined prompt segment. Function prompt_example will be called on every | |
| # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or | |
| # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user. | |
| # | |
| # Type `p10k help segment` for documentation and a more sophisticated example. | |
| function prompt_example() { | |
| p10k segment -f 208 -i '⭐' -t 'hello, %n' | |
| } | |
| # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job | |
| # is to generate the prompt segment for display in instant prompt. See | |
| # https://github.com/romkatv/powerlevel10k#instant-prompt. | |
| # | |
| # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function | |
| # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k | |
| # will replay these calls without actually calling instant_prompt_*. It is imperative that | |
| # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this | |
| # rule is not observed, the content of instant prompt will be incorrect. | |
| # | |
| # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If | |
| # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. | |
| function instant_prompt_example() { | |
| # Since prompt_example always makes the same `p10k segment` calls, we can call it from | |
| # instant_prompt_example. This will give us the same `example` prompt segment in the instant | |
| # and regular prompts. | |
| prompt_example | |
| } | |
| # User-defined prompt segments can be customized the same way as built-in segments. | |
| # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208 | |
| # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐' | |
| # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt | |
| # when accepting a command line. Supported values: | |
| # | |
| # - off: Don't change prompt when accepting a command line. | |
| # - always: Trim down prompt when accepting a command line. | |
| # - same-dir: Trim down prompt when accepting a command line unless this is the first command | |
| # typed after changing current working directory. | |
| typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off | |
| # Instant prompt mode. | |
| # | |
| # - off: Disable instant prompt. Choose this if you've tried instant prompt and found | |
| # it incompatible with your zsh configuration files. | |
| # - quiet: Enable instant prompt and don't print warnings when detecting console output | |
| # during zsh initialization. Choose this if you've read and understood | |
| # https://github.com/romkatv/powerlevel10k#instant-prompt. | |
| # - verbose: Enable instant prompt and print a warning when detecting console output during | |
| # zsh initialization. Choose this if you've never tried instant prompt, haven't | |
| # seen the warning, or if you are unsure what this all means. | |
| typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet | |
| # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. | |
| # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload | |
| # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you | |
| # really need it. | |
| typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true | |
| # If p10k is already loaded, reload configuration. | |
| # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. | |
| (( ! $+functions[p10k] )) || p10k reload | |
| } | |
| # Tell `p10k configure` which file it should overwrite. | |
| typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} | |
| (( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} | |
| 'builtin' 'unset' 'p10k_config_opts' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # sudo apt install tig xclip | |
| # bind the `c` key on tig to automatically copy the selected commit sha to the clipboard | |
| bind generic c @sh -c "echo -n %(commit) | cut -c -7 | xclip -r -selection c" | |
| # bind the backspace to be the opposite of enter on diff view (enter -> scroll down / backspace -> scroll up) | |
| bind diff <BackSpace> scroll-line-up | |
| # wrap long lines on diff view | |
| set wrap-lines = yes | |
| # remove tz from time column | |
| set main-view-date = custom | |
| set main-view-date-format = "%Y-%m-%d %H:%M:%S" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # sudo apt install fzf lolcat | |
| # sudo env "PATH=$PATH" uv pip install obliquestrategies --system --break-system-packages | |
| # zsh plugins | |
| # git clone https://github.com/Aloxaf/fzf-tab ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fzf-tab | |
| # git clone https://gist.github.com/475ee7768efc03727f21.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/git-auto-status | |
| # git clone https://github.com/agkozak/zsh-z ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-z | |
| # git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions | |
| # git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting | |
| # git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" | |
| # "open in vscode" | |
| # wget https://raw.githubusercontent.com/mhsattarian/nemo-open-in-vscode/master/vscode.nemo_action -O ~/.local/share/nemo/actions/vscode.nemo_action | |
| export ZSH="$HOME/.oh-my-zsh" | |
| ZSH_THEME="powerlevel10k/powerlevel10k" | |
| plugins=( | |
| fzf-tab | |
| git | |
| git-auto-fetch | |
| last-working-dir | |
| git-auto-status | |
| sudo | |
| zsh-syntax-highlighting | |
| zsh-autosuggestions | |
| zsh-z | |
| ) | |
| alias xx='xdg-open ' | |
| alias vim='vim "+set number"' | |
| alias python='python3 ' | |
| alias pp='python ' | |
| alias vinotes='vim ~/Desktop/notes.md' | |
| alias notes='cat ~/Desktop/notes.md' | |
| alias note='echo "- $*" >> ~/Desktop/notes.md' | |
| obliquestrategies | lolcat | |
| DISABLE_UPDATE_PROMPT=true | |
| setopt HIST_IGNORE_SPACE | |
| source $ZSH/oh-my-zsh.sh | |
| source /usr/share/doc/fzf/examples/key-bindings.zsh | |
| # Highlight commit messages up to the first 50 characters | |
| ZSH_HIGHLIGHT_REGEXP+=("(gcmsg|git commit -m) \"[^\"]{0,50}(\"|)" "fg=cyan") | |
| ZSH_HIGHLIGHT_REGEXP+=("(gcmsg|git commit -m) '[^']{0,50}('|)" "fg=cyan") | |
| typeset -A ZSH_HIGHLIGHT_PATTERNS | |
| ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets regexp) | |
| # https://askubuntu.com/questions/643142/is-it-possible-to-enter-password-for-sudo-only-once-and-configure-it-to-not-req | |
| # https://askubuntu.com/questions/1028439/ssh-config-visual-host-key-yes-no-option |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment