Merge branch 'master' into zsh_update_dir

This commit is contained in:
Alexandr Kozlinskiy 2016-11-21 22:07:01 +01:00
commit 1609783fa5
15 changed files with 197 additions and 41 deletions

View File

@ -49,9 +49,9 @@ Oh My Zsh comes with a shit load of plugins to take advantage of. You can take a
#### Enabling Plugins #### Enabling Plugins
If you spot a plugin (or several) that you would like to use with Oh My Zsh, you will need to edit the `~/.zshrc` file. Once you open it with your favorite editor, you'll see a spot to list all the plugins that you'd like Oh My Zsh to load on initialization. Once you spot a plugin (or several) that you'd like to use with Oh My Zsh, you'll need to enable them in the `.zshrc` file. You'll find the zshrc file in your `$HOME` directory. Open it with your favorite text editor and you'll see a spot to list all the plugins you want to load.
For example, this line might begin to look like... For example, this line might begin to look like this:
```shell ```shell
plugins=(git bundler osx rake ruby) plugins=(git bundler osx rake ruby)

View File

@ -19,8 +19,8 @@ fi
setopt long_list_jobs setopt long_list_jobs
## pager ## pager
export PAGER="less" env_default PAGER 'less'
export LESS="-R" env_default LESS '-R'
## super user alias ## super user alias
alias _='sudo' alias _='sudo'

View File

@ -4,6 +4,8 @@ autoload -U colors && colors
# Enable ls colors # Enable ls colors
export LSCOLORS="Gxfxcxdxbxegedabagacad" export LSCOLORS="Gxfxcxdxbxegedabagacad"
# TODO organise this chaotic logic
if [[ "$DISABLE_LS_COLORS" != "true" ]]; then if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
# Find the option for using colors in ls, depending on the version # Find the option for using colors in ls, depending on the version
if [[ "$OSTYPE" == netbsd* ]]; then if [[ "$OSTYPE" == netbsd* ]]; then
@ -18,14 +20,19 @@ if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
gls --color -d . &>/dev/null && alias ls='gls --color=tty' gls --color -d . &>/dev/null && alias ls='gls --color=tty'
colorls -G -d . &>/dev/null && alias ls='colorls -G' colorls -G -d . &>/dev/null && alias ls='colorls -G'
elif [[ "$OSTYPE" == darwin* ]]; then elif [[ "$OSTYPE" == darwin* ]]; then
gls --color -d . &>/dev/null && alias ls='gls --color=tty' || alias ls='ls -G' # this is a good alias, it works by default just using $LSCOLORS
ls -G . &>/dev/null && alias ls='ls -G'
# only use coreutils ls if there is a dircolors customization present ($LS_COLORS or .dircolors file)
# otherwise, gls will use the default color scheme which is ugly af
[[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d . &>/dev/null && alias ls='gls --color=tty'
else else
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes. # For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
if [[ -z "$LS_COLORS" ]]; then if [[ -z "$LS_COLORS" ]]; then
(( $+commands[dircolors] )) && eval "$(dircolors -b)" (( $+commands[dircolors] )) && eval "$(dircolors -b)"
fi fi
ls --color -d . &>/dev/null && alias ls='ls --color=tty' || alias ls='ls -G' ls --color -d . &>/dev/null && alias ls='ls --color=tty' || { ls -G . &>/dev/null && alias ls='ls -G' }
# Take advantage of $LS_COLORS for completion as well. # Take advantage of $LS_COLORS for completion as well.
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"

View File

@ -3,7 +3,7 @@ alias bubo='brew update && brew outdated'
alias bubc='brew upgrade && brew cleanup' alias bubc='brew upgrade && brew cleanup'
alias bubu='bubo && bubc' alias bubu='bubo && bubc'
if mkdir "$ZSH_CACHE_DIR/.brew-completion-message" 2>/dev/null; then if command mkdir "$ZSH_CACHE_DIR/.brew-completion-message" 2>/dev/null; then
print -P '%F{yellow}'Oh My Zsh brew plugin: print -P '%F{yellow}'Oh My Zsh brew plugin:
cat <<-'EOF' cat <<-'EOF'

View File

@ -54,17 +54,21 @@ alias mv='mv -i'
# depends on the SUFFIX :) # depends on the SUFFIX :)
if is-at-least 4.2.0; then if is-at-least 4.2.0; then
# open browser on urls # open browser on urls
_browser_fts=(htm html de org net com at cx nl se dk dk php) if [[ -n "$BROWSER" ]]; then
for ft in $_browser_fts ; do alias -s $ft=$BROWSER ; done _browser_fts=(htm html de org net com at cx nl se dk)
for ft in $_browser_fts; do alias -s $ft=$BROWSER; done
fi
_editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex) _editor_fts=(cpp cxx cc c hh h inl asc txt TXT tex)
for ft in $_editor_fts ; do alias -s $ft=$EDITOR ; done for ft in $_editor_fts; do alias -s $ft=$EDITOR; done
if [[ -n "$XIVIEWER" ]]; then
_image_fts=(jpg jpeg png gif mng tiff tif xpm) _image_fts=(jpg jpeg png gif mng tiff tif xpm)
for ft in $_image_fts ; do alias -s $ft=$XIVIEWER; done for ft in $_image_fts; do alias -s $ft=$XIVIEWER; done
fi
_media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm) _media_fts=(ape avi flv m4a mkv mov mp3 mpeg mpg ogg ogm rm wav webm)
for ft in $_media_fts ; do alias -s $ft=mplayer ; done for ft in $_media_fts; do alias -s $ft=mplayer; done
#read documents #read documents
alias -s pdf=acroread alias -s pdf=acroread
@ -83,4 +87,3 @@ fi
# Make zsh know about hosts already accessed by SSH # Make zsh know about hosts already accessed by SSH
zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })' zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ })'

View File

@ -9,6 +9,8 @@
# pushd -N: start counting from right of `dirs' output # pushd -N: start counting from right of `dirs' output
switch-to-dir () { switch-to-dir () {
[[ ${#dirstack} -eq 0 ]] && return
while ! builtin pushd -q $1 &>/dev/null; do while ! builtin pushd -q $1 &>/dev/null; do
# We found a missing directory: pop it out of the dir stack # We found a missing directory: pop it out of the dir stack
builtin popd -q $1 builtin popd -q $1

View File

@ -237,4 +237,4 @@ alias gupv='git pull --rebase -v'
alias glum='git pull upstream master' alias glum='git pull upstream master'
alias gwch='git whatchanged -p --abbrev-commit --pretty=medium' alias gwch='git whatchanged -p --abbrev-commit --pretty=medium'
alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip--"' alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify -m "--wip-- [skip ci]"'

View File

@ -1,5 +1,6 @@
# Open the node api for your current version to the optional section. # Open the node api for your current version to the optional section.
# TODO: Make the section part easier to use. # TODO: Make the section part easier to use.
function node-docs { function node-docs {
open_command "http://nodejs.org/docs/$(node --version)/api/all.html#all_$1" local section=${1:-all}
open_command "https://nodejs.org/docs/$(node --version)/api/$section.html"
} }

View File

@ -0,0 +1,17 @@
-------------------------------------
CHANGES FROM PREVIOUS VERSIONS OF ZNT
-------------------------------------
Changes from 2.2.1 to 2.2.7
---------------------------
Tmux integration has been added bind file znt-tmux.zsh in Tmux as
described in README.md and e.g. run local history on remote hosts. Tmux
opens new window with n-history, and pastes selected history entry into
immediate previous window (e.g. a remote session). Fixed plugin.zsh file
to not use (outer scope) positional parameters. This fixes problem with
Grlm's Zsh configuration. The file now doesn't use "test" builtin (but
[[ instead), because it can be shadowed by alias or command. Private
history has been fixed to not overwrite its history file with the same
content. This improves performance when switching to private history
view.

View File

@ -34,6 +34,60 @@ want to copy your previous data (from e.g. ~/.zhistory) into the new location.
## News ## News
* 06-10-2016
- Tmux-integration Ctrl-b-h in Tmux to open n-history in new window.
Then select history entry, it will be copied to the original Tmux window.
Use this to execute local commands on remote hosts. All that is needed is
this line added to ~/.tmux.conf:
bind h run-shell -b "$ZNT_REPO_DIR/znt-tmux.zsh"
* 16-05-2016
- n-kill has completion. It proposes *words* from what's in `ps -A`. Giving n-kill
arguments means grepping it will start only with matching `ps` entries.
* 15-05-2016
- Fixed problem where zsh-syntax-highlighting could render n-history slow (for
long history entries).
* 14-05-2016
- Configuration can be set from zshrc. Example:
znt_list_instant_select=1
znt_list_border=0
znt_list_bold=1
znt_list_colorpair="green/black"
znt_functions_keywords=( "zplg" "zgen" "match" )
znt_cd_active_text="underline"
znt_env_nlist_coloring_color=$'\x1b[00;33m'
znt_cd_hotlist=( "~/.config/znt" "/usr/share/zsh/site-functions" "/usr/share/zsh"
"/usr/local/share/zsh/site-functions" "/usr/local/share/zsh"
"/usr/local/bin" )
* 10-05-2016
- Search query rotation use Ctrl-A to rotate entered words right.
Words `1 2 3` become `3 1 2`.
* 09-05-2016
- New feature: n-help tool, available also from n-history via H key. It
displays help screen with various information on ZNT.
* 08-05-2016
- Approximate matching pressing f or Ctrl-F will enter FIX mode, in
which 1 or 2 errors are allowed in what is searched. This utilizes
original Zsh approximate matching features and is intended to be used
after entering search query, when a typo is discovered.
* 06-05-2016
- Private history can be edited. Use e key or Ctrl-E for that when in
n-history. Your $EDITOR will start. This is a way to have handy set
of bookmarks prepared in private history's file.
- Border can be disabled. Use following snippet in ~/.config/znt/n-list.conf
or any other tool-targetted config file:
# Should draw the border?
local border=0
* 30-04-2016 * 30-04-2016
- New feature: color themes. Use Ctrl-T and Ctrl-G to browse predefined - New feature: color themes. Use Ctrl-T and Ctrl-G to browse predefined
themes. They are listed in ~/.config/znt/n-list.conf. Use the file to themes. They are listed in ~/.config/znt/n-list.conf. Use the file to

View File

@ -307,7 +307,7 @@ while (( 1 )); do
elif [ "$active_view" = "1" ]; then elif [ "$active_view" = "1" ]; then
if [ -s "$private_history_db" ]; then if [ -s "$private_history_db" ]; then
local title=$'\x1b[00;32m'"Private history:"$'\x1b[00;00m\0' local title=$'\x1b[00;32m'"Private history:"$'\x1b[00;00m\0'
() { fc -ap -R "$private_history_db"; list=( "$title" ${history[@]} ) } () { fc -Rap "$private_history_db" 20000 0; list=( "$title" ${history[@]} ) }
else else
list=( "Private history - history entries selected via this tool will be put here" ) list=( "Private history - history entries selected via this tool will be put here" )
fi fi
@ -335,21 +335,37 @@ done
if [ "$REPLY" -gt 0 ]; then if [ "$REPLY" -gt 0 ]; then
selected="$reply[REPLY]" selected="$reply[REPLY]"
# Append to private history
if [[ "$active_view" = "0" ]]; then
local newline=$'\n'
local selected_ph="${selected//$newline/\\$newline}"
print -r -- "$selected_ph" >> "$private_history_db"
fi
# TMUX?
if [[ "$ZNT_TMUX_MODE" = "1" ]]; then
tmux send -t "$ZNT_TMUX_ORIGIN_SESSION:$ZNT_TMUX_ORIGIN_WINDOW.$ZNT_TMUX_ORIGIN_PANE" "$selected"
tmux kill-window
return 0
# ZLE? # ZLE?
if [ "${(t)CURSOR}" = "integer-local-special" ]; then elif [ "${(t)CURSOR}" = "integer-local-special" ]; then
zle .redisplay zle .redisplay
zle .kill-buffer zle .kill-buffer
LBUFFER+="$selected" LBUFFER+="$selected"
# Append to private history
local newline=$'\n'
selected="${selected//$newline/\\$newline}"
[ "$active_view" = "0" ] && print -r -- "$selected" >> "$private_history_db"
else else
print -zr -- "$selected" print -zr -- "$selected"
fi fi
else else
[ "${(t)CURSOR}" = "integer-local-special" ] && zle redisplay # TMUX?
if [[ "$ZNT_TMUX_MODE" = "1" ]]; then
tmux kill-window
# ZLE?
elif [[ "${(t)CURSOR}" = "integer-local-special" ]]; then
zle redisplay
fi
fi fi
return 0
# vim: set filetype=zsh: # vim: set filetype=zsh:

View File

@ -310,8 +310,9 @@ while (( 1 )); do
colsearch_pattern="${search_buffer// ##/|(#a2)}" colsearch_pattern="${search_buffer// ##/|(#a2)}"
list=( "${(@M)list:#(#ia2)*$~search_pattern*}" ) list=( "${(@M)list:#(#ia2)*$~search_pattern*}" )
else else
# Patterns will be *foo*~^*bar* and (foo|bar) # Pattern will be *foo*~^*bar* (inventor: Mikael Magnusson)
search_pattern="${search_buffer// ##/*~^*}" search_pattern="${search_buffer// ##/*~^*}"
# Pattern will be (foo|bar)
colsearch_pattern="${search_buffer// ##/|}" colsearch_pattern="${search_buffer// ##/|}"
list=( "${(@M)list:#(#i)*$~search_pattern*}" ) list=( "${(@M)list:#(#i)*$~search_pattern*}" )
fi fi

View File

@ -0,0 +1,50 @@
#!/usr/bin/env zsh
# Copyright (c) 2016, Zsolt Lengyel
# Modifications copyright (c) 2016, Sebastian Gniazdowski
#
# This script opens a new, temporary tmux pane and runs n-history. When
# a selection is made, the result (history entry) is pasted back into
# original tmux pane, and the temporary pane is closed. This allows to
# use local history on remote machines.
#
# To use, put this line to your ~/.tmux.conf. The tool is invoked with:
# Ctrl+b h
#
# bind h run-shell -b "$ZNT_REPO_DIR/znt-tmux.zsh"
#
# get and save the current active tmux pane id
active_pane=$(tmux display -p -F ':#{session_id}:#I:#P:#{pane_active}:#{window_active}:#{session_attached}' )
a_active_pane=("${(@s/:/)active_pane}")
active_session=${a_active_pane[2]//$}
active_window=$a_active_pane[3]
active_pane=$a_active_pane[4]
# set variables for upcoming window
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_MODE" 1
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_SESSION" "$active_session"
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_WINDOW" "$active_window"
tmux setenv -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_PANE" "$active_pane"
# create a new window in the active session and call it znt-hist
tmux new-window -t $active_session: -n znt-hist
# unset the variables, so only above single window has them
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_MODE"
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_SESSION"
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_WINDOW"
tmux setenv -u -t $active_session:$active_window.$active_pane "ZNT_TMUX_ORIGIN_PANE"
# znt's session id
znt_active_pane=$(tmux display -p -F ':#{session_id}:#I:#P:#{pane_active}:#{window_active}:#{session_attached}' )
znt_a_active_pane=("${(@s/:/)znt_active_pane}")
znt_active_session=${znt_a_active_pane[2]//$}
znt_active_window=$znt_a_active_pane[3]
znt_active_pane=$znt_a_active_pane[4]
# call znt
tmux send -t "$znt_active_session:$znt_active_window.$znt_active_pane" n-history ENTER

View File

@ -1,38 +1,43 @@
#!/usr/bin/env zsh #!/usr/bin/env zsh
REPO_DIR="${0%/*}" 0="${(%):-%N}" # this gives immunity to functionargzero being unset
CONFIG_DIR="$HOME/.config/znt" export ZNT_REPO_DIR="${0%/*}"
export ZNT_CONFIG_DIR="$HOME/.config/znt"
# #
# Copy configs # Copy configs
# #
if ! test -d "$HOME/.config"; then if [[ ! -d "$HOME/.config" ]]; then
mkdir "$HOME/.config" command mkdir "$HOME/.config"
fi fi
if ! test -d "$CONFIG_DIR"; then if [[ ! -d "$ZNT_CONFIG_DIR" ]]; then
mkdir "$CONFIG_DIR" command mkdir "$ZNT_CONFIG_DIR"
fi fi
# 9 files # 9 files
set n-aliases.conf n-env.conf n-history.conf n-list.conf n-panelize.conf n-cd.conf n-functions.conf n-kill.conf n-options.conf unset __ZNT_CONFIG_FILES
typeset -ga __ZNT_CONFIG_FILES
set +A __ZNT_CONFIG_FILES n-aliases.conf n-env.conf n-history.conf n-list.conf n-panelize.conf n-cd.conf n-functions.conf n-kill.conf n-options.conf
# Check for random 2 files if they exist # Check for random 2 files if they exist
# This will shift 0 - 7 elements # This will shift 0 - 7 elements
shift $(( RANDOM % 8 )) shift $(( RANDOM % 8 )) __ZNT_CONFIG_FILES
if ! test -f "$CONFIG_DIR/$1" || ! test -f "$CONFIG_DIR/$2"; then if [[ ! -f "$ZNT_CONFIG_DIR/${__ZNT_CONFIG_FILES[1]}" || ! -f "$ZNT_CONFIG_DIR/${__ZNT_CONFIG_FILES[2]}" ]]; then
# Something changed - examine every file # Something changed - examine every file
set n-aliases.conf n-env.conf n-history.conf n-list.conf n-panelize.conf n-cd.conf n-functions.conf n-kill.conf n-options.conf set +A __ZNT_CONFIG_FILES n-aliases.conf n-env.conf n-history.conf n-list.conf n-panelize.conf n-cd.conf n-functions.conf n-kill.conf n-options.conf
for i; do unset __ZNT_CONFIG_FILE
if ! test -f "$CONFIG_DIR/$i"; then typeset -g __ZNT_CONFIG_FILE
cp "$REPO_DIR/.config/znt/$i" "$CONFIG_DIR" for __ZNT_CONFIG_FILE in "${__ZNT_CONFIG_FILES[@]}"; do
if [[ ! -f "$ZNT_CONFIG_DIR/$__ZNT_CONFIG_FILE" ]]; then
command cp "$ZNT_REPO_DIR/.config/znt/$__ZNT_CONFIG_FILE" "$ZNT_CONFIG_DIR"
fi fi
done done
unset __ZNT_CONFIG_FILE
fi fi
# Don't leave positional parameters being set unset __ZNT_CONFIG_FILES
set --
# #
# Load functions # Load functions

View File

@ -73,7 +73,7 @@ source $ZSH/oh-my-zsh.sh
# export ARCHFLAGS="-arch x86_64" # export ARCHFLAGS="-arch x86_64"
# ssh # ssh
# export SSH_KEY_PATH="~/.ssh/dsa_id" # export SSH_KEY_PATH="~/.ssh/rsa_id"
# Set personal aliases, overriding those provided by oh-my-zsh libs, # Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh # plugins, and themes. Aliases can be placed here, though oh-my-zsh