1
0
mirror of https://github.com/dcarrillo/prezto.git synced 2025-07-01 10:29:25 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
5c7bd2009c Simplify the use of ZDOTDIR 2013-08-19 19:21:34 -04:00
31 changed files with 287 additions and 446 deletions

View File

@ -9,30 +9,34 @@ Installation
------------
Prezto will work with any recent release of Zsh, but the minimum recommended
version is 4.3.11. Unfortunately, [Cygwin][9] is not supported due to
non-standard core utilities.
version is 4.3.10.
1. Launch Zsh:
zsh
2. Clone the repository:
2. Set the path to the Prezto installation directory:
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
ZDOTDIR="${ZDOTDIR:-$HOME}"
PREZTO="$ZDOTDIR/.zprezto"
3. Create a new Zsh configuration by copying the Zsh configuration files
3. Clone the repository:
git clone --recursive https://github.com/sorin-ionescu/prezto.git "$PREZTO"
4. Create a new Zsh configuration by copying the Zsh configuration files
provided:
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
for rcfile in "$PREZTO/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR}/.${rcfile:t}"
done
4. Set Zsh as your default shell:
5. Set Zsh as your default shell:
chsh -s /bin/zsh
5. Open a new Zsh terminal window or tab.
6. Open a new Zsh terminal window or tab.
### Troubleshooting
@ -40,13 +44,6 @@ If you are not able to find certain commands after switching to *Prezto*,
modify the `PATH` variable in *~/.zshenv* then open a new Zsh terminal
window or tab.
Updating
--------
Pull the latest changes and update submodules.
git pull && git submodule update --init --recursive
Usage
-----
@ -86,7 +83,7 @@ License
(The MIT License)
Copyright (c) 2009-2014 Sorin Ionescu and contributors.
Copyright (c) 2009-2012 Robby Russell, Sorin Ionescu, and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
@ -114,5 +111,4 @@ SOFTWARE.
[6]: http://gitref.org
[7]: http://www.bash2zsh.com/zsh_refcard/refcard.pdf
[8]: http://grml.org/zsh/zsh-lovers.html
[9]: http://www.cygwin.com

View File

@ -10,7 +10,7 @@
#
# Check for the minimum supported version.
min_zsh_version='4.3.11'
min_zsh_version='4.3.10'
if ! autoload -Uz is-at-least || ! is-at-least "$min_zsh_version"; then
print "prezto: old shell detected, minimum required: $min_zsh_version" >&2
return 1
@ -31,7 +31,7 @@ function pmodload {
pmodules=("$argv[@]")
# Add functions to $fpath.
fpath=(${pmodules:+${ZDOTDIR:-$HOME}/.zprezto/modules/${^pmodules}/functions(/FN)} $fpath)
fpath=(${pmodules:+$PREZTO/modules/${^pmodules}/functions(/FN)} $fpath)
function {
local pfunction
@ -40,7 +40,7 @@ function pmodload {
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Load Prezto functions.
for pfunction in ${ZDOTDIR:-$HOME}/.zprezto/modules/${^pmodules}/functions/$~pfunction_glob; do
for pfunction in $PREZTO/modules/${^pmodules}/functions/$~pfunction_glob; do
autoload -Uz "$pfunction"
done
}
@ -49,19 +49,19 @@ function pmodload {
for pmodule in "$pmodules[@]"; do
if zstyle -t ":prezto:module:$pmodule" loaded 'yes' 'no'; then
continue
elif [[ ! -d "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule" ]]; then
elif [[ ! -d "$PREZTO/modules/$pmodule" ]]; then
print "$0: no such module: $pmodule" >&2
continue
else
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/init.zsh"
if [[ -s "$PREZTO/modules/$pmodule/init.zsh" ]]; then
source "$PREZTO/modules/$pmodule/init.zsh"
fi
if (( $? == 0 )); then
zstyle ":prezto:module:$pmodule" loaded 'yes'
else
# Remove the $fpath entry.
fpath[(r)${ZDOTDIR:-$HOME}/.zprezto/modules/${pmodule}/functions]=()
fpath[(r)$PREZTO/modules/${pmodule}/functions]=()
function {
local pfunction
@ -71,7 +71,7 @@ function pmodload {
setopt LOCAL_OPTIONS EXTENDED_GLOB
# Unload Prezto functions.
for pfunction in ${ZDOTDIR:-$HOME}/.zprezto/modules/$pmodule/functions/$~pfunction_glob; do
for pfunction in $PREZTO/modules/$pmodule/functions/$~pfunction_glob; do
unfunction "$pfunction"
done
}
@ -87,8 +87,8 @@ function pmodload {
#
# Source the Prezto configuration file.
if [[ -s "${ZDOTDIR:-$HOME}/.zpreztorc" ]]; then
source "${ZDOTDIR:-$HOME}/.zpreztorc"
if [[ -s "$ZDOTDIR/.zpreztorc" ]]; then
source "$ZDOTDIR/.zpreztorc"
fi
# Disable color and theme in dumb terminals.

View File

@ -31,16 +31,6 @@ Dpkg
Defines dpkg aliases and functions.
Editor
------
Sets key bindings.
Emacs
-----
Enables Emacs dependency management.
Environment
-----------
@ -51,19 +41,13 @@ Fasd
Maintains a frequently used file and directory list for fast access.
Git
---
Enhances the Git distributed version control system by providing aliases,
functions and by exposing repository status information to prompts.
GNU Utility
-----------
Provides for the interactive use of GNU utilities on non-GNU systems.
GPG
---
---------
Provides for an easier use of GPG by setting up gpg-agent.
@ -77,16 +61,16 @@ Helper
Provides helper functions for developing modules.
History
-------
Sets history options and defines history aliases.
History Substring Search
------------------------
Integrates zsh-history-substring-search into Prezto.
History
-------
Sets history options and defines history aliases.
Homebrew
--------
@ -102,11 +86,6 @@ Node.js
Provides utility functions for Node.js and loads npm completion.
Ocaml
-----
Initializes Ocaml package management.
OSX
---
@ -158,10 +137,10 @@ Spectrum
Provides for easier use of 256 colors and effects.
SSH
---
SSH-Agent
---------
Provides for an easier use of SSH by setting up ssh-agent.
Provides for an easier use of ssh-agent.
Syntax Highlighting
-------------------

View File

@ -1,8 +1,7 @@
Command-Not-Found
=================
Displays installation information for not found commands by loading the
[command-not-found][1] tool on Debian-based and Arch Linux-based distributions.
Loads the [command-not-found][1] tool on Debian-based distributions.
Authors
-------

View File

@ -5,14 +5,10 @@
# Joseph Jon Booker <joe@neoturbine.net>
#
# Load command-not-found on Debian-based distributions.
if [[ -s '/etc/zsh_command_not_found' ]]; then
source '/etc/zsh_command_not_found'
# Load command-not-found on Arch Linux-based distributions.
elif [[ -s '/usr/share/doc/pkgfile/command-not-found.zsh' ]]; then
source '/usr/share/doc/pkgfile/command-not-found.zsh'
# Return if requirements are not found.
else
if [[ ! -s '/etc/zsh_command_not_found' ]]; then
return 1
fi
source '/etc/zsh_command_not_found'

View File

@ -36,7 +36,7 @@ unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor.
# Use caching to make completion for cammands such as dpkg and apt usable.
zstyle ':completion::complete:*' use-cache on
zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"
zstyle ':completion::complete:*' cache-path "$ZDOTDIR/.zcompcache"
# Case-insensitive (all), partial-word, and then substring completion.
if zstyle -t ':prezto:module:completion:*' case-sensitive; then

View File

@ -10,7 +10,7 @@
pmodload 'editor'
# Source module files.
source "${0:h}/external/zsh-history-substring-search.zsh" || return 1
source "${0:h}/external/zsh-history-substring-search.zsh"
#
# Search

View File

@ -10,7 +10,7 @@
# Variables
#
HISTFILE="${ZDOTDIR:-$HOME}/.zhistory" # The path to the history file.
HISTFILE="$ZDOTDIR/.zhistory" # The path to the history file.
HISTSIZE=10000 # The maximum number of events to save in the internal history.
SAVEHIST=10000 # The maximum number of events to save in the history file.

View File

@ -1,28 +0,0 @@
Ocaml
=====
Initializes [Ocaml][1] package management.
OPAM
----
[OPAM][2] is a package manager for Ocaml.
This module enables local package installation with OPAM by extending the
relevant path and Ocaml variables.
### Usage
Install packages to your local package directory with `opam install`.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][3].*
- [Sebastian Wiesner](https://github.com/lunaryorn)
[1]: http://ocaml.org/
[2]: http://opam.ocamlpro.com/
[3]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -1,15 +0,0 @@
#
# Initializes Ocaml package management.
#
# Authors:
# Sebastian Wiesner <lunaryorn@gmail.com>
#
# Return if requirements are not found.
if (( ! $+commands[opam] )); then
return 1
fi
# Initialize OPAM.
eval "$(opam config env)"

View File

@ -55,10 +55,10 @@ alias pacq='pacman --sync --info'
alias pacQ='pacman --query --info'
# Searches for packages in the repositories.
alias pacs='pacman --sync --search'
alias pacs='pacman --sync --recursive'
# Searches for packages in the local database.
alias pacS='pacman --query --search'
alias pacS='pacman --query --recursive'
# Lists orphan packages.
alias pacman-list-orphans='sudo pacman --query --deps --unrequired'

View File

@ -6,15 +6,15 @@ Enables local Python and local Python package installation.
Local Python Installation
-------------------------
[pyenv][4] builds and installs multiple Python versions locally in the home
[pythonz][4] builds and installs multiple Python versions locally in the home
directory.
This module prepends the pyenv directory to the path variable to enable the
execution of `pyenv`.
This module prepends the pythonz directory to the path variable to enable the
execution of `pythonz`.
### Usage
Install Python versions with `pyenv install` into *~/.pyenv/versions*.
Install Python versions with `pythonz install` into *~/.pythonz/pythons*.
Local Package Installation
--------------------------
@ -61,34 +61,21 @@ system site-packages directory.
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
### Settings
#### Lazy loading
By default, virtualenvwrapper is loaded in lazy mode. This behaviour can be disabled adding the following line to *~/.zpreztorc*:
zstyle ':prezto:module:python' lazy_venv 'no'
#### Automatic virtualenv initialization
To enable autoenv, add the following line to *~/.zpreztorc*:
zstyle ':prezto:module:python' autoenv 'yes'
If a virtualenv is active, and was not activated by autoenv, then autoenv does nothing.
Otherwise, autoenv activated or deactivates a virtual environment whenever a directory is changed; based on the following priority:
1. Name specified in a file named *.venv* in the cwd.
2. *.venv* file in git root. If folder is inside git repository.
3. Name of git root folder.
4. No virtualenv.
Aliases
-------
- `py` is short for `python`.
### Pythonz
- `pyz` is short for `pythonz`.
- `pyzc` removes stale source folders and archives.
- `pyzi` installs Python versions.
- `pyzl` lists installed Python versions.
- `pyzL` lists available Python versions.
- `pyzu` updates itself to the latest version.
- `pyzx` uninstalls Python versions.
Functions
---------
@ -118,6 +105,6 @@ Authors
[1]: http://www.python.org/dev/peps/pep-0370/
[2]: http://www.doughellmann.com/projects/virtualenvwrapper/
[3]: http://pypi.python.org/pypi/virtualenv
[4]: https://github.com/yyuu/pyenv
[4]: http://saghul.github.com/pythonz/
[5]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -6,94 +6,50 @@
# Sebastian Wiesner <lunaryorn@googlemail.com>
#
# Load manually installed pyenv into the shell session.
if [[ -s "$HOME/.pyenv/bin/pyenv" ]]; then
path=("$HOME/.pyenv/bin" $path)
eval "$(pyenv init -)"
# Load package manager installed pyenv into the shell session.
elif (( $+commands[pyenv] )); then
eval "$(pyenv init -)"
# Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on Mac OS X and ~/.local elsewhere, to PATH.
else
if [[ "$OSTYPE" == darwin* ]]; then
path=($HOME/Library/Python/*/bin(N) $path)
else
# This is subject to change.
path=($HOME/.local/bin $path)
fi
# Load pythonz into the shell session.
if [[ -s $HOME/.pythonz/bin/pythonz ]]; then
path=($HOME/.pythonz/bin $path)
fi
# Return if requirements are not found.
if (( ! $+commands[python] && ! $+commands[pyenv] )); then
if (( ! $+commands[python] && ! $+commands[pythonz] )); then
return 1
fi
local venv_script=virtualenvwrapper
if zstyle -T ':prezto:module:python' lazy_venv; then
venv_script+=_lazy
# Prepend PEP 370 per user site packages directory, which defaults to
# ~/Library/Python on Mac OS X and ~/.local elsewhere, to PATH.
if [[ "$OSTYPE" == darwin* ]]; then
path=($HOME/Library/Python/*/bin(N) $path)
else
# This is subject to change.
path=($HOME/.local/bin $path)
fi
# Load virtualenvwrapper into the shell session.
if (( $+commands[$venv_script.sh] )); then
if (( $+commands[virtualenvwrapper_lazy.sh] )); then
# Set the directory where virtual environments are stored.
export WORKON_HOME="$HOME/.virtualenvs"
export WORKON_HOME=$HOME/.virtualenvs
# Disable the virtualenv prompt.
VIRTUAL_ENV_DISABLE_PROMPT=1
source "$commands[$venv_script.sh]"
source "$commands[virtualenvwrapper_lazy.sh]"
fi
function autoenv {
#Don't run in shell scripts etc.
if [[ $ZSH_SUBSHELL -ne 0 ]]; then
return
fi
#Don't run if currently in virtual env not set by autoenv
if (( ($+VIRTUAL_ENV) && !($+AUTOENV) )); then
return
fi
local name=""
if [[ -f .venv ]]; then
#.venv file in current dir gets highest priority
name=$(<.venv)
elif is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
local gitroot="$(git rev-parse --show-toplevel 2> /dev/null)"
if [ -f "$gitroot/.venv" ]; then
#If there is a .venv file in gitroot
name=$(<$gitroot/.venv)
else
#Else use the name of the folder as venv name
name=$gitroot:t
fi
fi
local venv_name="$VIRTUAL_ENV:t"
if [[ $name != $venv_name ]]; then
if [[ -z $name ]]; then
deactivate && unset AUTOENV
return
fi
if [[ -d "$WORKON_HOME/$name" ]]; then
workon $name && export AUTOENV=1
return
fi
fi
}
if zstyle -T ':prezto:module:python' autoenv; then
add-zsh-hook chpwd autoenv
fi
#
# Aliases
#
alias py='python'
# pythonz
if (( $+commands[pythonz] )); then
alias pyz='pythonz'
alias pyzc='pythonz cleanup'
alias pyzi='pythonz install'
alias pyzl='pythonz list'
alias pyzL='pythonz list -a'
alias pyzu='pythonz update'
alias pyzx='pythonz uninstall'
fi

View File

@ -7,30 +7,39 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Load dependencies.
pmodload 'ruby'
# Return if requirements are not found.
if (( ! $+commands[bundle] )); then
if (( ! $+commands[rails] )); then
return 1
fi
#
# Aliases
# Aliases (Compatible with Rails 2)
#
alias ror='bundle exec rails'
alias rorc='bundle exec rails console'
alias rordc='bundle exec rails dbconsole'
alias rordm='bundle exec rake db:migrate'
alias rordM='bundle exec rake db:migrate db:test:clone'
alias rordr='bundle exec rake db:rollback'
alias rorg='bundle exec rails generate'
alias rorl='tail -f "$(ruby-app-root)/log/development.log"'
alias rorlc='bundle exec rake log:clear'
alias rorp='bundle exec rails plugin'
alias rorr='bundle exec rails runner'
alias rors='bundle exec rails server'
alias rorsd='bundle exec rails server --debugger'
alias rorx='bundle exec rails destroy'
alias ror='rails'
alias rorc='_rails-command console'
alias rordc='_rails-command dbconsole'
alias rordm='rake db:migrate'
alias rordM='rake db:migrate db:test:clone'
alias rordr='rake db:rollback'
alias rorg='_rails-command generate'
alias rorl='tail -f log/development.log'
alias rorlc='rake log:clear'
alias rorp='_rails-command plugin'
alias rorr='_rails-command runner'
alias rors='_rails-command server'
alias rorsd='_rails-command server --debugger'
alias rorx='_rails-command destroy'
#
# Functions
#
function _rails-command {
if [[ -e "script/server" ]]; then
ruby script/"$@"
else
ruby script/rails "$@"
fi
}

View File

@ -59,7 +59,6 @@ Aliases
Functions
---------
- `ruby-app-root` displays the path to the Ruby application root directory.
- `ruby-info` exposes information about the Ruby environment via the
`$ruby_info` associative array.

View File

@ -1,19 +0,0 @@
#
# Displays the path to the Ruby application root directory.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local root_dir="$PWD"
while [[ "$root_dir" != '/' ]]; do
if [[ -f "$root_dir/Gemfile" ]]; then
print "$root_dir"
break
fi
root_dir="$root_dir:h"
done
return 1

View File

@ -23,9 +23,14 @@ elif [[ -s "$HOME/.rbenv/bin/rbenv" ]]; then
elif (( $+commands[rbenv] )); then
eval "$(rbenv init - --no-rehash zsh)"
# Prepend local gems bin directories to PATH.
# Install local gems according to operating system conventions.
else
path=($HOME/.gem/ruby/*/bin(N) $path)
if [[ "$OSTYPE" == darwin* ]]; then
export GEM_HOME="$HOME/Library/Ruby/Gems/1.8"
path=("$GEM_HOME/bin" $path)
else
path=($HOME/.gem/ruby/*/bin(N) $path)
fi
fi
# Return if requirements are not found.
@ -44,7 +49,7 @@ alias rb='ruby'
if (( $+commands[bundle] )); then
alias rbb='bundle'
alias rbbe='rbb exec'
alias rbbi='rbb install'
alias rbbi='rbb install --path vendor/bundle'
alias rbbl='rbb list'
alias rbbo='rbb open'
alias rbbp='rbb package'
@ -52,8 +57,6 @@ if (( $+commands[bundle] )); then
alias rbbI='rbbi \
&& rbb package \
&& print .bundle >>! .gitignore \
&& print vendor/assets >>! .gitignore \
&& print vendor/bundle >>! .gitignore \
&& print vendor/cache >>! .gitignore'
fi

View File

@ -21,13 +21,10 @@ _ssh_agent_sock="$TMPDIR/ssh-agent.sock"
# Start ssh-agent if not started.
if [[ ! -S "$SSH_AUTH_SOCK" ]]; then
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
else
# Export environment variables.
source "$_ssh_agent_env" 2> /dev/null
# Start ssh-agent if not started.
if ! ps -U "$USER" -o pid,ucomm | grep -q "${SSH_AGENT_PID} ssh-agent"; then
eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")"
fi
fi
# Create a persistent SSH authentication socket.

View File

@ -11,7 +11,7 @@ if ! zstyle -t ':prezto:module:syntax-highlighting' color; then
fi
# Source module files.
source "${0:h}/external/zsh-syntax-highlighting.zsh" || return 1
source "${0:h}/external/zsh-syntax-highlighting.zsh"
# Set highlighters.
zstyle -a ':prezto:module:syntax-highlighting' highlighters 'ZSH_HIGHLIGHT_HIGHLIGHTERS'

View File

@ -13,33 +13,23 @@ directory, add the following to *zpreztorc*:
zstyle ':prezto:module:terminal' auto-title 'yes'
Auto titling is disabled inside terminal multiplexers, except inside dvtm, since
it interferes with window names defined in configuration files and profile
managers.
To format terminal window and tab titles, add the following to *zpreztorc*:
zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
zstyle ':prezto:module:terminal:tab-title' format '%m: %s'
`%s` will be replaced with the current working directory path or the currently
executing program name.
For a list of sequences, see [Expansion of Prompt Sequences][1].
Functions
---------
- `set-tab-title` sets the terminal tab title.
- `set-window-title` sets the terminal or terminal multiplexer window title.
- `set-screen-window-title` sets the screen title.
- `set-terminal-tab-title` sets the terminal tab title.
- `set-terminal-window-title` sets the terminal window title.
- `set-titles-with-command` sets the screen and terminal titles with
a given command.
- `set-titles-with-path` sets the screen and terminal titles with a given path.
Authors
-------
*The authors of this module should be contacted via the [issue tracker][2].*
*The authors of this module should be contacted via the [issue tracker][1].*
- [James Cox](https://github.com/imajes)
- [Sorin Ionescu](https://github.com/sorin-ionescu)
[1]: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Expansion-of-Prompt-Sequences
[2]: https://github.com/sorin-ionescu/prezto/issues
[1]: https://github.com/sorin-ionescu/prezto/issues

View File

@ -2,6 +2,7 @@
# Sets terminal window and tab titles.
#
# Authors:
# James Cox <james@imaj.es>
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
@ -10,115 +11,113 @@ if [[ "$TERM" == 'dumb' ]]; then
return 1
fi
# Sets the terminal or terminal multiplexer window title.
function set-window-title {
local title_format{,ted}
zstyle -s ':prezto:module:terminal:window-title' format 'title_format' || title_format="%s"
zformat -f title_formatted "$title_format" "s:$argv"
# Set the GNU Screen window number.
if [[ -n "$WINDOW" ]]; then
export SCREEN_NO="%B${WINDOW}%b "
else
export SCREEN_NO=""
fi
# Sets the GNU Screen title.
function set-screen-window-title {
if [[ "$TERM" == screen* ]]; then
title_format="\ek%s\e\\"
else
title_format="\e]2;%s\a"
printf "\ek%s\e\\" ${(V)argv}
fi
}
printf "$title_format" "${(V%)title_formatted}"
# Sets the terminal window title.
function set-terminal-window-title {
if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then
printf "\e]2;%s\a" ${(V)argv}
fi
}
# Sets the terminal tab title.
function set-tab-title {
local title_format{,ted}
zstyle -s ':prezto:module:terminal:tab-title' format 'title_format' || title_format="%s"
zformat -f title_formatted "$title_format" "s:$argv"
printf "\e]1;%s\a" ${(V%)title_formatted}
function set-terminal-tab-title {
if [[ "$TERM" == ((x|a|ml|dt|E)term*|(u|)rxvt*) ]]; then
printf "\e]1;%s\a" ${(V)argv}
fi
}
# Sets the tab and window titles with a given command.
function _terminal-set-titles-with-command {
function set-titles-with-command {
# Do not set the window and tab titles in Terminal.app because they are not
# reset upon command termination.
if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]]; then
return 1
fi
emulate -L zsh
setopt EXTENDED_GLOB
# Get the command name that is under job control.
if [[ "${2[(w)1]}" == (fg|%*)(\;|) ]]; then
if [[ "${1[(w)1]}" == (fg|%*)(\;|) ]]; then
# Get the job name, and, if missing, set it to the default %+.
local job_name="${${2[(wr)%*(\;|)]}:-%+}"
local job_name="${${1[(wr)%*(\;|)]}:-%+}"
# Make a local copy for use in the subshell.
local -A jobtexts_from_parent_shell
jobtexts_from_parent_shell=(${(kv)jobtexts})
jobs "$job_name" 2>/dev/null > >(
jobs $job_name 2>/dev/null > >(
read index discarded
# The index is already surrounded by brackets: [1].
_terminal-set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}"
set-titles-with-command "${(e):-\$jobtexts_from_parent_shell$index}"
)
else
# Set the command name, or in the case of sudo or ssh, the next command.
local cmd="${${2[(wr)^(*=*|sudo|ssh|-*)]}:t}"
local cmd=${${1[(wr)^(*=*|sudo|ssh|-*)]}:t}
local truncated_cmd="${cmd/(#m)?(#c15,)/${MATCH[1,12]}...}"
unset MATCH
set-window-title "$cmd"
set-tab-title "$truncated_cmd"
if [[ "$TERM" == screen* ]]; then
set-screen-window-title "$truncated_cmd"
else
set-terminal-window-title "$cmd"
set-terminal-tab-title "$truncated_cmd"
fi
fi
}
# Sets the tab and window titles with a given path.
function _terminal-set-titles-with-path {
function set-titles-with-path {
emulate -L zsh
setopt EXTENDED_GLOB
local absolute_path="${${1:a}:-$PWD}"
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
set-window-title "$abbreviated_path"
set-tab-title "$truncated_path"
if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]]; then
printf '\e]7;%s\a' "file://$HOST${absolute_path// /%20}"
else
local abbreviated_path="${absolute_path/#$HOME/~}"
local truncated_path="${abbreviated_path/(#m)?(#c15,)/...${MATCH[-12,-1]}}"
unset MATCH
if [[ "$TERM" == screen* ]]; then
set-screen-window-title "$truncated_path"
else
set-terminal-window-title "$abbreviated_path"
set-terminal-tab-title "$truncated_path"
fi
fi
}
# Sets the Terminal.app proxy icon.
function _terminal-set-terminal-app-proxy-icon {
printf '\e]7;%s\a' "file://$HOST${${1:-$PWD}// /%20}"
}
# Do not override precmd/preexec; append to the hook array.
# Don't override precmd/preexec; append to hook array.
autoload -Uz add-zsh-hook
# Set up the Apple Terminal.
if [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] \
&& ( ! [[ -n "$STY" || -n "$TMUX" || -n "$DVTM" ]] )
then
# Sets the Terminal.app current working directory before the prompt is
# displayed.
add-zsh-hook precmd _terminal-set-terminal-app-proxy-icon
# Sets the tab and window titles before the prompt is displayed.
function set-titles-precmd {
if zstyle -t ':prezto:module:terminal' auto-title; then
set-titles-with-path
fi
}
add-zsh-hook precmd set-titles-precmd
# Unsets the Terminal.app current working directory when a terminal
# multiplexer or remote connection is started since it can no longer be
# updated, and it becomes confusing when the directory displayed in the title
# bar is no longer synchronized with real current working directory.
function _terminal-unset-terminal-app-proxy-icon {
if [[ "${2[(w)1]:t}" == (screen|tmux|dvtm|ssh|mosh) ]]; then
_terminal-set-terminal-app-proxy-icon ' '
fi
}
add-zsh-hook preexec _terminal-unset-terminal-app-proxy-icon
# Do not set the tab and window titles in Terminal.app since it sets the tab
# title to the currently running process by default and the current working
# directory is set separately.
return
fi
# Set up non-Apple terminals.
if zstyle -t ':prezto:module:terminal' auto-title \
&& ( ! [[ -n "$STY" || -n "$TMUX" ]] )
then
# Sets the tab and window titles before the prompt is displayed.
add-zsh-hook precmd _terminal-set-titles-with-path
# Sets the tab and window titles before command execution.
add-zsh-hook preexec _terminal-set-titles-with-command
fi
# Sets the tab and window titles before command execution.
function set-titles-preexec {
if zstyle -t ':prezto:module:terminal' auto-title; then
set-titles-with-command "$2"
fi
}
add-zsh-hook preexec set-titles-preexec

View File

@ -104,13 +104,17 @@ alias sl='ls' # I often screw this up.
# Mac OS X Everywhere
if [[ "$OSTYPE" == darwin* ]]; then
alias o='open'
alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time'
else
alias o='xdg-open'
alias get='wget --continue --progress=bar --timestamping'
if (( $+commands[xclip] )); then
alias pbcopy='xclip -selection clipboard -in'
alias pbpaste='xclip -selection clipboard -out'
elif (( $+commands[xsel] )); then
fi
if (( $+commands[xsel] )); then
alias pbcopy='xsel --clipboard --input'
alias pbpaste='xsel --clipboard --output'
fi
@ -119,13 +123,6 @@ fi
alias pbc='pbcopy'
alias pbp='pbpaste'
# File Download
if (( $+commands[curl] )); then
alias get='curl --continue-at - --location --progress-bar --remote-name --remote-time'
elif (( $+commands[wget] )); then
alias get='wget --continue --progress=bar --timestamping'
fi
# Resource Usage
alias df='df -kh'
alias du='du -kh'

View File

@ -48,7 +48,7 @@ zprofile and zlogin are not meant to be used concurrently but can be done so.
This file is sourced by interactive shells. It should define aliases,
functions, shell options, and key bindings.
### zpreztorc
## zpreztorc
This file configures Prezto.

View File

@ -8,7 +8,7 @@
# Execute code that does not affect the current session in the background.
{
# Compile the completion dump to increase startup speed.
zcompdump="${ZDOTDIR:-$HOME}/.zcompdump"
zcompdump="$ZDOTDIR/.zcompdump"
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
zcompile "$zcompdump"
fi

View File

@ -10,7 +10,7 @@
#
# Set case-sensitivity for completion, history lookup, etc.
# zstyle ':prezto:*:*' case-sensitive 'yes'
zstyle ':prezto:*:*' case-sensitive 'no'
# Color output (auto set to 'no' on dumb terminals).
zstyle ':prezto:*:*' color 'yes'
@ -122,19 +122,14 @@ zstyle ':prezto:module:prompt' theme 'sorin'
# 'builtin' 'bg=blue' \
# 'command' 'bg=blue' \
# 'function' 'bg=blue'
#
#
# Terminal
#
# Auto set the tab and window titles.
# zstyle ':prezto:module:terminal' auto-title 'yes'
# Set the window title format.
# zstyle ':prezto:module:terminal:window-title' format '%n@%m: %s'
# Set the tab title format.
# zstyle ':prezto:module:terminal:tab-title' format '%m: %s'
zstyle ':prezto:module:terminal' auto-title 'yes'
#
# Tmux

View File

@ -5,73 +5,3 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
#
# Browser
#
if [[ "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
export EDITOR='nano'
export VISUAL='nano'
export PAGER='less'
#
# Language
#
if [[ -z "$LANG" ]]; then
export LANG='en_US.UTF-8'
fi
#
# Paths
#
# Ensure path arrays do not contain duplicates.
typeset -gU cdpath fpath mailpath path
# Set the the list of directories that cd searches.
# cdpath=(
# $cdpath
# )
# Set the list of directories that Zsh searches for programs.
path=(
/usr/local/{bin,sbin}
$path
)
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X and -F (exit if the content fits on one screen) to enable it.
export LESS='-F -g -i -M -R -S -w -X -z-4'
# Set the Less input preprocessor.
if (( $+commands[lesspipe.sh] )); then
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
fi
#
# Temporary Files
#
if [[ ! -d "$TMPDIR" ]]; then
export TMPDIR="/tmp/$USER"
mkdir -p -m 700 "$TMPDIR"
fi
TMPPREFIX="${TMPDIR%/}/zsh"
if [[ ! -d "$TMPPREFIX" ]]; then
mkdir -p "$TMPPREFIX"
fi

View File

@ -5,8 +5,79 @@
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
# Ensure that a non-login, non-interactive shell has a defined environment.
if [[ "$SHLVL" -eq 1 && ! -o LOGIN ]]; then
source "${ZDOTDIR:-$HOME}/.zprofile"
#
# Browser
#
if [[ "$OSTYPE" == darwin* ]]; then
export BROWSER='open'
fi
#
# Editors
#
export EDITOR='nano'
export VISUAL='nano'
export PAGER='less'
#
# Language
#
if [[ -z "$LANG" ]]; then
export LANG='en_US.UTF-8'
fi
#
# Paths
#
typeset -gU cdpath fpath mailpath path
# Set the the list of directories that cd searches.
# cdpath=(
# $cdpath
# )
# Set the list of directories that Zsh searches for programs.
path=(
/usr/local/{bin,sbin}
$path
)
#
# Less
#
# Set the default Less options.
# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
# Remove -X and -F (exit if the content fits on one screen) to enable it.
export LESS='-F -g -i -M -R -S -w -X -z-4'
# Set the Less input preprocessor.
if (( $+commands[lesspipe.sh] )); then
export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
fi
#
# Temporary Files
#
if [[ ! -d "$TMPDIR" ]]; then
export TMPDIR="/tmp/$USER"
mkdir -p -m 700 "$TMPDIR"
fi
TMPPREFIX="${TMPDIR%/}/zsh"
if [[ ! -d "$TMPPREFIX" ]]; then
mkdir -p "$TMPPREFIX"
fi
#
# Zsh
#
ZDOTDIR="${ZDOTDIR:-$HOME}"
PREZTO="$ZDOTDIR/.zprezto"

View File

@ -6,8 +6,8 @@
#
# Source Prezto.
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
if [[ -s "$PREZTO/init.zsh" ]]; then
source "$PREZTO/init.zsh"
fi
# Customize to your needs...