mirror of
https://github.com/DazAh/dotfiles
synced 2026-05-22 02:25:48 +01:00
update cs video settings and ohmyzsh
This commit is contained in:
@@ -208,12 +208,12 @@ function pacmansignkeys() {
|
||||
if (( $+commands[xdg-open] )); then
|
||||
function pacweb() {
|
||||
pkg="$1"
|
||||
infos="$(pacman -Si "$pkg")"
|
||||
infos="$(LANG=C pacman -Si "$pkg")"
|
||||
if [[ -z "$infos" ]]; then
|
||||
return
|
||||
fi
|
||||
repo="$(grep '^Repo' <<< "$infos" | grep -oP '[^ ]+$')"
|
||||
arch="$(grep '^Arch' <<< "$infos" | grep -oP '[^ ]+$')"
|
||||
repo="$(grep -m 1 '^Repo' <<< "$infos" | grep -oP '[^ ]+$')"
|
||||
arch="$(grep -m 1 '^Arch' <<< "$infos" | grep -oP '[^ ]+$')"
|
||||
xdg-open "https://www.archlinux.org/packages/$repo/$arch/$pkg/" &>/dev/null
|
||||
}
|
||||
fi
|
||||
|
||||
@@ -3,7 +3,7 @@ ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
||||
ASDF_COMPLETIONS="$ASDF_DIR/completions"
|
||||
|
||||
# If not found, check for Homebrew package
|
||||
if [[ ! -f "$ASDF_DIR/asdf.sh" ]] && (( $+commands[brew] )); then
|
||||
if [[ ! -f "$ASDF_DIR/asdf.sh" || ! -f "$ASDF_COMPLETIONS/asdf.bash" ]] && (( $+commands[brew] )); then
|
||||
ASDF_DIR="$(brew --prefix asdf)"
|
||||
ASDF_COMPLETIONS="$ASDF_DIR/etc/bash_completion.d"
|
||||
fi
|
||||
|
||||
@@ -8,4 +8,4 @@ To use it, add `autojump` to the plugins array in your zshrc file:
|
||||
plugins=(... autojump)
|
||||
```
|
||||
|
||||
More info on the usage: https://github.com/wting/autojump
|
||||
**Note:** you have to [install autojump](https://github.com/wting/autojump#installation) first.
|
||||
|
||||
@@ -29,6 +29,6 @@ if (( ! found && $+commands[brew] )); then
|
||||
fi
|
||||
fi
|
||||
|
||||
(( ! found )) && echo '[oh-my-zsh] autojump script not found'
|
||||
(( ! found )) && echo '[oh-my-zsh] autojump not found. Please install it first.'
|
||||
|
||||
unset autojump_paths file found
|
||||
|
||||
@@ -31,17 +31,17 @@ function aws_change_access_key() {
|
||||
|
||||
echo Insert the credentials when asked.
|
||||
asp "$1" || return 1
|
||||
aws iam create-access-key
|
||||
aws configure --profile "$1"
|
||||
AWS_PAGER="" aws iam create-access-key
|
||||
AWS_PAGER="" aws configure --profile "$1"
|
||||
|
||||
echo You can now safely delete the old access key running \`aws iam delete-access-key --access-key-id ID\`
|
||||
echo Your current keys are:
|
||||
aws iam list-access-keys
|
||||
AWS_PAGER="" aws iam list-access-keys
|
||||
}
|
||||
|
||||
function aws_profiles() {
|
||||
[[ -r "${AWS_CONFIG_FILE:-$HOME/.aws/config}" ]] || return 1
|
||||
grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/'
|
||||
grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9@_\.-]*\).*/\1/'
|
||||
}
|
||||
|
||||
function _aws_profiles() {
|
||||
@@ -63,7 +63,7 @@ fi
|
||||
# Load awscli completions
|
||||
|
||||
# AWS CLI v2 comes with its own autocompletion. Check if that is there, otherwise fall back
|
||||
if [[ -x /usr/local/bin/aws_completer ]]; then
|
||||
if command -v aws_completer &> /dev/null; then
|
||||
autoload -Uz bashcompinit && bashcompinit
|
||||
complete -C aws_completer aws
|
||||
else
|
||||
|
||||
@@ -9,5 +9,14 @@ To use, add `battery` to the list of plugins in your `.zshrc` file:
|
||||
Then, add the `battery_pct_prompt` function to your custom theme. For example:
|
||||
|
||||
```
|
||||
RPROMPT='$(battery_pct_prompt)'
|
||||
RPROMPT='$(battery_pct_prompt) ...'
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
On Linux, you must have the `acpi` tool installed on your operating system.
|
||||
|
||||
Here's an example of how to install with apt:
|
||||
```
|
||||
sudo apt-get install acpi
|
||||
```
|
||||
|
||||
@@ -53,7 +53,7 @@ bgnotify () { ## args: (title, subtitle)
|
||||
|
||||
bgnotify_begin() {
|
||||
bgnotify_timestamp=$EPOCHSECONDS
|
||||
bgnotify_lastcmd="$1"
|
||||
bgnotify_lastcmd="${1:-$2}"
|
||||
bgnotify_windowid=$(currentWindowId)
|
||||
}
|
||||
|
||||
|
||||
@@ -3,19 +3,28 @@
|
||||
The plugin adds several aliases for common [brew](https://brew.sh) commands.
|
||||
|
||||
To use it, add `brew` to the plugins array of your zshrc file:
|
||||
```
|
||||
|
||||
```zsh
|
||||
plugins=(... brew)
|
||||
```
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
|--------|----------------------|---------------|
|
||||
| brewp | `brew pin` | Pin a specified formulae, preventing them from being upgraded when issuing the brew upgrade <formulae> command. |
|
||||
| brews | `brew list -1` | List installed formulae, one entry per line, or the installed files for a given formulae. |
|
||||
| brewsp | `brew list --pinned` | Show the versions of pinned formulae, or only the specified (pinned) formulae if formulae are given. |
|
||||
| bubo | `brew update && brew outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated formulae. |
|
||||
| bubc | `brew upgrade && brew cleanup` | Upgrade outdated, unpinned brews (with existing install options), then removes stale lock files and outdated downloads for formulae and casks, and removes old versions of installed formulae. |
|
||||
| bubu | `bubo && bubc` | Updates Homebrew, lists outdated formulae, upgrades oudated and unpinned formulae, and removes stale and outdated downloads and versions. |
|
||||
| bcubo | `brew update && brew cask outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated casks. |
|
||||
| bcubc | `brew cask reinstall $(brew cask outdated) && brew cleanup` | Updates outdated casks, then runs cleanup. |
|
||||
| Alias | Command | Description |
|
||||
|----------|------------------------------------------------------------- |---------------------------------------------------------------------|
|
||||
| `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. |
|
||||
| `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. |
|
||||
| `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. |
|
||||
| `bubo` | `brew update && brew outdated` | Update Homebrew data, then list outdated formulae and casks. |
|
||||
| `bubc` | `brew upgrade && brew cleanup` | Upgrade outdated formulae and casks, then run cleanup. |
|
||||
| `bubu` | `bubo && bubc` | Do the last two operations above. |
|
||||
| `buf` | `brew upgrade --formula` | Upgrade only formulas (not casks). |
|
||||
| `bcubo` | `brew update && brew outdated --cask` | Update Homebrew data, then list outdated casks. |
|
||||
| `bcubc` | `brew cask reinstall $(brew outdated --cask) && brew cleanup` | Update outdated casks, then run cleanup. |
|
||||
|
||||
## Completion
|
||||
|
||||
With the release of Homebrew 1.0, they decided to bundle the zsh completion as part of the
|
||||
brew installation, so we no longer ship it with the brew plugin; now it only has brew
|
||||
aliases. If you find that brew completion no longer works, make sure you have your Homebrew
|
||||
installation fully up to date.
|
||||
|
||||
@@ -4,21 +4,6 @@ alias brewsp='brew list --pinned'
|
||||
alias bubo='brew update && brew outdated'
|
||||
alias bubc='brew upgrade && brew cleanup'
|
||||
alias bubu='bubo && bubc'
|
||||
alias bcubo='brew update && brew cask outdated'
|
||||
alias bcubc='brew cask reinstall $(brew cask outdated) && brew cleanup'
|
||||
|
||||
if command mkdir "$ZSH_CACHE_DIR/.brew-completion-message" 2>/dev/null; then
|
||||
print -P '%F{yellow}'Oh My Zsh brew plugin:
|
||||
cat <<-'EOF'
|
||||
|
||||
With the advent of their 1.0 release, Homebrew has decided to bundle
|
||||
the zsh completion as part of the brew installation, so we no longer
|
||||
ship it with the brew plugin; now it only has brew aliases.
|
||||
|
||||
If you find that brew completion no longer works, make sure you have
|
||||
your Homebrew installation fully up to date.
|
||||
|
||||
You will only see this message once.
|
||||
EOF
|
||||
print -P '%f'
|
||||
fi
|
||||
alias buf='brew upgrade --formula'
|
||||
alias bcubo='brew update && brew outdated --cask'
|
||||
alias bcubc='brew cask reinstall $(brew outdated --cask) && brew cleanup'
|
||||
|
||||
@@ -1,52 +1,74 @@
|
||||
# Bundler
|
||||
|
||||
- adds completion for basic bundler commands
|
||||
- adds short aliases for common bundler commands
|
||||
- `be` aliased to `bundle exec`.
|
||||
It also supports aliases (if `rs` is `rails server`, `be rs` will bundle-exec `rails server`).
|
||||
- `bl` aliased to `bundle list`
|
||||
- `bp` aliased to `bundle package`
|
||||
- `bo` aliased to `bundle open`
|
||||
- `bout` aliased to `bundle outdated`
|
||||
- `bu` aliased to `bundle update`
|
||||
- `bi` aliased to `bundle install --jobs=<cpu core count>` (only for bundler `>= 1.4.0`)
|
||||
- adds a wrapper for common gems:
|
||||
- looks for a binstub under `./bin/` and executes it (if present)
|
||||
- calls `bundle exec <gem executable>` otherwise
|
||||
This plugin adds completion for basic bundler commands, as well as aliases and helper functions for
|
||||
an easier experience with bundler.
|
||||
|
||||
To use it, add `bundler` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... bundler)
|
||||
```
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
|--------|--------------------------------------|------------------------------------------------------------------------------------------|
|
||||
| `ba` | `bundle add` | Add gem to the Gemfile and run bundle install |
|
||||
| `bck` | `bundle check` | Verifies if dependencies are satisfied by installed gems |
|
||||
| `bcn` | `bundle clean` | Cleans up unused gems in your bundler directory |
|
||||
| `be` | `bundle exec` | Execute a command in the context of the bundle |
|
||||
| `bi` | `bundle install --jobs=<core_count>` | Install the dependencies specified in your Gemfile (using all cores in bundler >= 1.4.0) |
|
||||
| `bl` | `bundle list` | List all the gems in the bundle |
|
||||
| `bo` | `bundle open` | Opens the source directory for a gem in your bundle |
|
||||
| `bout` | `bundle outdated` | List installed gems with newer versions available |
|
||||
| `bp` | `bundle package` | Package your needed .gem files into your application |
|
||||
| `bu` | `bundle update` | Update your gems to the latest available versions |
|
||||
|
||||
## Gem wrapper
|
||||
|
||||
The plugin adds a wrapper for common gems, which:
|
||||
|
||||
- Looks for a binstub under `./bin/` and executes it if present.
|
||||
- Calls `bundle exec <gem>` otherwise.
|
||||
|
||||
Common gems wrapped by default (by name of the executable):
|
||||
|
||||
`annotate`, `cap`, `capify`, `cucumber`, `foodcritic`, `guard`, `hanami`, `irb`, `jekyll`, `kitchen`, `knife`, `middleman`, `nanoc`, `pry`, `puma`, `rackup`, `rainbows`, `rake`, `rspec`, `rubocop`, `shotgun`, `sidekiq`, `spec`, `spork`, `spring`, `strainer`, `tailor`, `taps`, `thin`, `thor`, `unicorn` and `unicorn_rails`.
|
||||
|
||||
## Configuration
|
||||
### Settings
|
||||
|
||||
Please use the exact name of the executable and not the gem name.
|
||||
You can add or remove gems from the list of wrapped commands.
|
||||
Please **use the exact name of the executable** and not the gem name.
|
||||
|
||||
### Add additional gems to be wrapped
|
||||
#### Include gems to be wrapped (`BUNDLED_COMMANDS`)
|
||||
|
||||
Add this before the plugin list in your `.zshrc`:
|
||||
|
||||
Add this before the plugin-list in your `.zshrc`:
|
||||
```sh
|
||||
BUNDLED_COMMANDS=(rubocop)
|
||||
plugins=(... bundler ...)
|
||||
```
|
||||
|
||||
This will add the wrapper for the `rubocop` gem (i.e. the executable).
|
||||
|
||||
#### Exclude gems from being wrapped (`UNBUNDLED_COMMANDS`)
|
||||
|
||||
### Exclude gems from being wrapped
|
||||
Add this before the plugin list in your `.zshrc`:
|
||||
|
||||
Add this before the plugin-list in your `.zshrc`:
|
||||
```sh
|
||||
UNBUNDLED_COMMANDS=(foreman spin)
|
||||
plugins=(... bundler ...)
|
||||
```
|
||||
|
||||
This will exclude the `foreman` and `spin` gems (i.e. their executable) from being wrapped.
|
||||
|
||||
## Excluded gems
|
||||
### Excluded gems
|
||||
|
||||
These gems should not be called with `bundle exec`. Please see [issue #2923](https://github.com/ohmyzsh/ohmyzsh/pull/2923) on GitHub for clarification.
|
||||
These gems should not be called with `bundle exec`. Please see [issue #2923](https://github.com/ohmyzsh/ohmyzsh/pull/2923) on GitHub for clarification:
|
||||
|
||||
`berks`
|
||||
`foreman`
|
||||
`mailcatcher`
|
||||
`rails`
|
||||
`ruby`
|
||||
`spin`
|
||||
- `berks`
|
||||
- `foreman`
|
||||
- `mailcatcher`
|
||||
- `rails`
|
||||
- `ruby`
|
||||
- `spin`
|
||||
|
||||
@@ -1,11 +1,49 @@
|
||||
## Aliases
|
||||
|
||||
alias ba="bundle add"
|
||||
alias bck="bundle check"
|
||||
alias bcn="bundle clean"
|
||||
alias be="bundle exec"
|
||||
alias bi="bundle_install"
|
||||
alias bl="bundle list"
|
||||
alias bp="bundle package"
|
||||
alias bo="bundle open"
|
||||
alias bout="bundle outdated"
|
||||
alias bp="bundle package"
|
||||
alias bu="bundle update"
|
||||
alias bi="bundle_install"
|
||||
alias bcn="bundle clean"
|
||||
|
||||
## Functions
|
||||
|
||||
bundle_install() {
|
||||
# Bail out if bundler is not installed
|
||||
if (( ! $+commands[bundle] )); then
|
||||
echo "Bundler is not installed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Bail out if not in a bundled project
|
||||
if ! _within-bundled-project; then
|
||||
echo "Can't 'bundle install' outside a bundled project"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check the bundler version is at least 1.4.0
|
||||
autoload -Uz is-at-least
|
||||
local bundler_version=$(bundle version | cut -d' ' -f3)
|
||||
if ! is-at-least 1.4.0 "$bundler_version"; then
|
||||
bundle install "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
# If bundler is at least 1.4.0, use all the CPU cores to bundle install
|
||||
if [[ "$OSTYPE" = (darwin|freebsd)* ]]; then
|
||||
local cores_num="$(sysctl -n hw.ncpu)"
|
||||
else
|
||||
local cores_num="$(nproc)"
|
||||
fi
|
||||
bundle install --jobs="$cores_num" "$@"
|
||||
}
|
||||
|
||||
## Gem wrapper
|
||||
|
||||
bundled_commands=(
|
||||
annotate
|
||||
@@ -52,65 +90,41 @@ for cmd in $BUNDLED_COMMANDS; do
|
||||
bundled_commands+=($cmd);
|
||||
done
|
||||
|
||||
## Functions
|
||||
|
||||
bundle_install() {
|
||||
if ! _bundler-installed; then
|
||||
echo "Bundler is not installed"
|
||||
elif ! _within-bundled-project; then
|
||||
echo "Can't 'bundle install' outside a bundled project"
|
||||
else
|
||||
local bundler_version=`bundle version | cut -d' ' -f3`
|
||||
if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then
|
||||
if [[ "$OSTYPE" = (darwin|freebsd)* ]]
|
||||
then
|
||||
local cores_num="$(sysctl -n hw.ncpu)"
|
||||
else
|
||||
local cores_num="$(nproc)"
|
||||
fi
|
||||
bundle install --jobs=$cores_num $@
|
||||
else
|
||||
bundle install $@
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_bundler-installed() {
|
||||
which bundle > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# Check if in the root or a subdirectory of a bundled project
|
||||
_within-bundled-project() {
|
||||
local check_dir="$PWD"
|
||||
while [ "$check_dir" != "/" ]; do
|
||||
[ -f "$check_dir/Gemfile" -o -f "$check_dir/gems.rb" ] && return
|
||||
check_dir="$(dirname $check_dir)"
|
||||
while [[ "$check_dir" != "/" ]]; do
|
||||
if [[ -f "$check_dir/Gemfile" || -f "$check_dir/gems.rb" ]]; then
|
||||
return 0
|
||||
fi
|
||||
check_dir="${check_dir:h}"
|
||||
done
|
||||
false
|
||||
}
|
||||
|
||||
_binstubbed() {
|
||||
[ -f "./bin/${1}" ]
|
||||
return 1
|
||||
}
|
||||
|
||||
_run-with-bundler() {
|
||||
if _bundler-installed && _within-bundled-project; then
|
||||
if _binstubbed $1; then
|
||||
./bin/${^^@}
|
||||
else
|
||||
bundle exec $@
|
||||
fi
|
||||
if (( ! $+commands[bundle] )) || ! _within-bundled-project; then
|
||||
"$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
if [[ -f "./bin/${1}" ]]; then
|
||||
./bin/${^^@}
|
||||
else
|
||||
$@
|
||||
bundle exec "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
## Main program
|
||||
for cmd in $bundled_commands; do
|
||||
eval "function unbundled_$cmd () { $cmd \$@ }"
|
||||
eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}"
|
||||
alias $cmd=bundled_$cmd
|
||||
# Create wrappers for bundled and unbundled execution
|
||||
eval "function unbundled_$cmd () { \"$cmd\" \"\$@\"; }"
|
||||
eval "function bundled_$cmd () { _run-with-bundler \"$cmd\" \"\$@\"; }"
|
||||
alias "$cmd"="bundled_$cmd"
|
||||
|
||||
if which _$cmd > /dev/null 2>&1; then
|
||||
compdef _$cmd bundled_$cmd=$cmd
|
||||
# Bind completion function to wrapped gem if available
|
||||
if (( $+functions[_$cmd] )); then
|
||||
compdef "_$cmd" "bundled_$cmd"="$cmd"
|
||||
fi
|
||||
done
|
||||
|
||||
unset cmd bundled_commands
|
||||
|
||||
@@ -12,8 +12,8 @@ _cargo() {
|
||||
'(-q --quiet)*'{-v,--verbose}'[use verbose output]'
|
||||
'(-q --quiet -v --verbose)'{-q,--quiet}'[no output printed to stdout]'
|
||||
'-Z+[pass unstable (nightly-only) flags to cargo]: :_cargo_unstable_flags'
|
||||
'--frozen[require that Cargo.lock and cache are up-to-date]'
|
||||
'--locked[require that Cargo.lock is up-to-date]'
|
||||
'--frozen[require that Cargo.lock and cache are up to date]'
|
||||
'--locked[require that Cargo.lock is up to date]'
|
||||
'--color=[specify colorization option]:coloring:(auto always never)'
|
||||
'(- 1 *)'{-h,--help}'[show help message]'
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,7 @@
|
||||
# CloudApp plugin
|
||||
|
||||
## The CloudApp API is deprecated, so the plugin will be removed shortly
|
||||
|
||||
[CloudApp](https://www.getcloudapp.com) brings screen recording, screenshots, and GIF creation to the cloud, in an easy-to-use enterprise-level app. The CloudApp plugin allows you to upload a file to your CloadApp account from the command line.
|
||||
|
||||
To use it, add `cloudapp` to the plugins array of your `~/.zshrc` file:
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
alias cloudapp="${0:a:h}/cloudapp.rb"
|
||||
|
||||
# Ensure only the owner can access the credentials file
|
||||
if [[ -f ~/.cloudapp ]]; then
|
||||
chmod 600 ~/.cloudapp
|
||||
fi
|
||||
print -Pn "%F{yellow}"
|
||||
print "[oh-my-zsh] The CloudApp API no longer works, so the cloudapp plugin will"
|
||||
print "[oh-my-zsh] be removed shortly. Please remove it from your plugins list."
|
||||
print -Pn "%f"
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
#!/usr/bin/env ruby
|
||||
#
|
||||
# cloudapp
|
||||
# Zach Holman / @holman
|
||||
#
|
||||
# Uploads a file from the command line to CloudApp, drops it into your
|
||||
# clipboard (on a Mac, at least).
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# cloudapp drunk-blake.png
|
||||
#
|
||||
# This requires Aaron Russell's cloudapp_api gem:
|
||||
#
|
||||
# gem install cloudapp_api
|
||||
#
|
||||
# Requires you set your CloudApp credentials in ~/.cloudapp as a simple file of:
|
||||
#
|
||||
# email
|
||||
# password
|
||||
|
||||
require 'rubygems'
|
||||
begin
|
||||
require 'cloudapp_api'
|
||||
rescue LoadError
|
||||
puts "You need to install cloudapp_api: gem install cloudapp_api"
|
||||
exit!(1)
|
||||
end
|
||||
|
||||
config_file = "#{ENV['HOME']}/.cloudapp"
|
||||
unless File.exist?(config_file)
|
||||
puts "You need to type your email and password (one per line) into "+
|
||||
"`~/.cloudapp`"
|
||||
exit!(1)
|
||||
end
|
||||
|
||||
email,password = File.read(config_file).split("\n")
|
||||
|
||||
class HTTParty::Response
|
||||
# Apparently HTTPOK.ok? IS NOT OKAY WTFFFFFFFFFFUUUUUUUUUUUUUU
|
||||
# LETS MONKEY PATCH IT I FEEL OKAY ABOUT IT
|
||||
def ok? ; true end
|
||||
end
|
||||
|
||||
if ARGV[0].nil?
|
||||
puts "You need to specify a file to upload."
|
||||
exit!(1)
|
||||
end
|
||||
|
||||
CloudApp.authenticate(email,password)
|
||||
url = CloudApp::Item.create(:upload, {:file => ARGV[0]}).url
|
||||
|
||||
# Say it for good measure.
|
||||
puts "Uploaded to #{url}."
|
||||
|
||||
# Get the embed link.
|
||||
url = "#{url}/#{ARGV[0].split('/').last}"
|
||||
|
||||
# Copy it to your (Mac's) clipboard.
|
||||
`echo '#{url}' | tr -d "\n" | pbcopy`
|
||||
@@ -38,6 +38,14 @@ Pygments offers multiple styles. By default, the `default` style is used, but yo
|
||||
ZSH_COLORIZE_STYLE="colorful"
|
||||
```
|
||||
|
||||
### Chroma Formatter Settings
|
||||
|
||||
Chroma supports terminal output in 8 color, 256 color, and true-color. If you need to change the default terminal output style from the standard 8 color output, set the `ZSH_COLORIZE_CHROMA_FORMATTER` environment variable:
|
||||
|
||||
```
|
||||
ZSH_COLORIZE_CHROMA_FORMATTER=terminal256
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
* `ccat <file> [files]`: colorize the contents of the file (or files, if more than one are provided).
|
||||
|
||||
@@ -46,7 +46,7 @@ colorize_cat() {
|
||||
if [[ "$ZSH_COLORIZE_TOOL" == "pygmentize" ]]; then
|
||||
pygmentize -O style="$ZSH_COLORIZE_STYLE" -g
|
||||
else
|
||||
chroma --style="$ZSH_COLORIZE_STYLE"
|
||||
chroma --style="$ZSH_COLORIZE_STYLE" --formatter="${ZSH_COLORIZE_CHROMA_FORMATTER:-terminal}"
|
||||
fi
|
||||
return $?
|
||||
fi
|
||||
@@ -62,7 +62,7 @@ colorize_cat() {
|
||||
pygmentize -O style="$ZSH_COLORIZE_STYLE" -g "$FNAME"
|
||||
fi
|
||||
else
|
||||
chroma --style="$ZSH_COLORIZE_STYLE" "$FNAME"
|
||||
chroma --style="$ZSH_COLORIZE_STYLE" --formatter="${ZSH_COLORIZE_CHROMA_FORMATTER:-terminal}" "$FNAME"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ alias lS='ls -1FSsh'
|
||||
alias lart='ls -1Fcart'
|
||||
alias lrt='ls -1Fcrt'
|
||||
|
||||
alias zshrc='${=EDITOR} ~/.zshrc' # Quick access to the ~/.zshrc file
|
||||
alias zshrc='${=EDITOR} ${ZDOTDIR:-$HOME}/.zshrc' # Quick access to the .zshrc file
|
||||
|
||||
alias grep='grep --color'
|
||||
alias sgrep='grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} '
|
||||
@@ -55,15 +55,15 @@ if is-at-least 4.2.0; then
|
||||
# open browser on urls
|
||||
if [[ -n "$BROWSER" ]]; then
|
||||
_browser_fts=(htm html de org net com at cx nl se dk)
|
||||
for ft in $_browser_fts; do alias -s $ft=$BROWSER; done
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
|
||||
@@ -12,18 +12,20 @@ plugins=(... composer)
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
| ------ | ---------------------------------------------- | -------------------------------------------------------------------------------------- |
|
||||
| `c` | `composer` | Starts composer |
|
||||
| `csu` | `composer self-update` | Updates composer to the latest version |
|
||||
| `cu` | `composer update` | Updates composer dependencies and `composer.lock` file |
|
||||
| `cr` | `composer require` | Adds new packages to `composer.json` |
|
||||
| `crm` | `composer remove` | Removes packages from `composer.json` |
|
||||
| `ci` | `composer install` | Resolves and installs dependencies from `composer.json` |
|
||||
| `ccp` | `composer create-project` | Create new project from an existing package |
|
||||
| `cdu` | `composer dump-autoload` | Updates the autoloader |
|
||||
| `cdo` | `composer dump-autoload --optimize-autoloader` | Converts PSR-0/4 autoloading to classmap for a faster autoloader (good for production) |
|
||||
| `cgu` | `composer global update` | Allows update command to run on COMPOSER_HOME directory |
|
||||
| `cgr` | `composer global require` | Allows require command to run on COMPOSER_HOME directory |
|
||||
| `cgrm` | `composer global remove` | Allows remove command to run on COMPOSER_HOME directory |
|
||||
| `cget` | `curl -s https://getcomposer.org/installer` | Installs composer in the current directory |
|
||||
| Alias | Command | Description |
|
||||
| ------ | ------------------------------------------- | --------------------------------------------------------------------------------------- |
|
||||
| `c` | `composer` | Starts composer |
|
||||
| `csu` | `composer self-update` | Updates composer to the latest version |
|
||||
| `cu` | `composer update` | Updates composer dependencies and `composer.lock` file |
|
||||
| `cr` | `composer require` | Adds new packages to `composer.json` |
|
||||
| `crm` | `composer remove` | Removes packages from `composer.json` |
|
||||
| `ci` | `composer install` | Resolves and installs dependencies from `composer.json` |
|
||||
| `ccp` | `composer create-project` | Create new project from an existing package |
|
||||
| `cdu` | `composer dump-autoload` | Updates the autoloader |
|
||||
| `cdo` | `composer dump-autoload -o` | Converts PSR-0/4 autoloading to classmap for a faster autoloader (good for production) |
|
||||
| `cgu` | `composer global update` | Allows update command to run on COMPOSER_HOME directory |
|
||||
| `cgr` | `composer global require` | Allows require command to run on COMPOSER_HOME directory |
|
||||
| `cgrm` | `composer global remove` | Allows remove command to run on COMPOSER_HOME directory |
|
||||
| `cget` | `curl -s https://getcomposer.org/installer` | Installs composer in the current directory |
|
||||
| `co` | `composer outdated` | Shows a list of installed packages with available updates |
|
||||
| `cod` | `composer outdated --direct` | Shows a list of installed packages with available updates which are direct dependencies |
|
||||
|
||||
@@ -43,13 +43,27 @@ alias cdo='composer dump-autoload -o'
|
||||
alias cgu='composer global update'
|
||||
alias cgr='composer global require'
|
||||
alias cgrm='composer global remove'
|
||||
alias co='composer outdated'
|
||||
alias cod='composer outdated --direct'
|
||||
|
||||
# install composer in the current directory
|
||||
alias cget='curl -s https://getcomposer.org/installer | php'
|
||||
|
||||
# Add Composer's global binaries to PATH, using Composer if available.
|
||||
if (( $+commands[composer] )); then
|
||||
export PATH=$PATH:$(composer global config bin-dir --absolute 2>/dev/null)
|
||||
autoload -Uz _store_cache _retrieve_cache
|
||||
|
||||
_retrieve_cache composer
|
||||
|
||||
if [[ -z $__composer_bin_dir ]]; then
|
||||
__composer_bin_dir=$(composer global config bin-dir --absolute 2>/dev/null)
|
||||
_store_cache composer __composer_bin_dir
|
||||
fi
|
||||
|
||||
# Add Composer's global binaries to PATH
|
||||
export PATH="$PATH:$__composer_bin_dir"
|
||||
|
||||
unset __composer_bin_dir
|
||||
else
|
||||
[ -d $HOME/.composer/vendor/bin ] && export PATH=$PATH:$HOME/.composer/vendor/bin
|
||||
[ -d $HOME/.config/composer/vendor/bin ] && export PATH=$PATH:$HOME/.config/composer/vendor/bin
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
# Don't continue if direnv is not found
|
||||
command -v direnv &>/dev/null || return
|
||||
|
||||
_direnv_hook() {
|
||||
trap -- '' SIGINT;
|
||||
eval "$(direnv export zsh)";
|
||||
|
||||
@@ -28,3 +28,4 @@ plugins=(... docker-compose)
|
||||
| dclf | `docker-compose logs -f` | Show logs and follow output |
|
||||
| dcpull | `docker-compose pull` | Pull image of a service |
|
||||
| dcstart | `docker-compose start` | Start a container |
|
||||
| dck | `docker-compose kill` | Kills containers |
|
||||
|
||||
@@ -24,3 +24,4 @@ alias dcl='docker-compose logs'
|
||||
alias dclf='docker-compose logs -f'
|
||||
alias dcpull='docker-compose pull'
|
||||
alias dcstart='docker-compose start'
|
||||
alias dck='docker-compose kill'
|
||||
|
||||
@@ -10,3 +10,25 @@ plugins=(... docker)
|
||||
|
||||
A copy of the completion script from the docker/cli git repo:
|
||||
https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker
|
||||
|
||||
## Settings
|
||||
|
||||
By default, the completion doesn't allow option-stacking, meaning if you try to
|
||||
complete `docker run -it <TAB>` it won't work, because you're _stacking_ the
|
||||
`-i` and `-t` options.
|
||||
|
||||
[You can enable it](https://github.com/docker/cli/commit/b10fb43048) by **adding
|
||||
the lines below to your zshrc file**, but be aware of the side effects:
|
||||
|
||||
> This enables Zsh to understand commands like `docker run -it
|
||||
> ubuntu`. However, by enabling this, this also makes Zsh complete
|
||||
> `docker run -u<tab>` with `docker run -uapprox` which is not valid. The
|
||||
> users have to put the space or the equal sign themselves before trying
|
||||
> to complete.
|
||||
>
|
||||
> Therefore, this behavior is disabled by default. To enable it:
|
||||
>
|
||||
> ```
|
||||
> zstyle ':completion:*:*:docker:*' option-stacking yes
|
||||
> zstyle ':completion:*:*:docker-*:*' option-stacking yes
|
||||
> ```
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
# - Felix Riedel
|
||||
# - Steve Durrheimer
|
||||
# - Vincent Bernat
|
||||
# - Rohan Verma
|
||||
#
|
||||
# license:
|
||||
#
|
||||
@@ -604,6 +605,7 @@ __docker_container_subcommand() {
|
||||
"($help)*--blkio-weight-device=[Block IO (relative device weight)]:device:Block IO weight: "
|
||||
"($help)*--cap-add=[Add Linux capabilities]:capability: "
|
||||
"($help)*--cap-drop=[Drop Linux capabilities]:capability: "
|
||||
"($help)--cgroupns=[Cgroup namespace mode to use]:cgroup namespace mode: "
|
||||
"($help)--cgroup-parent=[Parent cgroup for the container]:cgroup: "
|
||||
"($help)--cidfile=[Write the container ID to the file]:CID file:_files"
|
||||
"($help)--cpus=[Number of CPUs (default 0.000)]:cpus: "
|
||||
@@ -676,6 +678,7 @@ __docker_container_subcommand() {
|
||||
"($help -m --memory)"{-m=,--memory=}"[Memory limit]:Memory limit: "
|
||||
"($help)--memory-reservation=[Memory soft limit]:Memory limit: "
|
||||
"($help)--memory-swap=[Total memory limit with swap]:Memory limit: "
|
||||
"($help)--pids-limit[Tune container pids limit (set -1 for unlimited)]"
|
||||
"($help)--restart=[Restart policy]:restart policy:(no on-failure always unless-stopped)"
|
||||
)
|
||||
opts_help=("(: -)--help[Print usage]")
|
||||
@@ -801,7 +804,7 @@ __docker_container_subcommand() {
|
||||
"($help -l --latest)"{-l,--latest}"[Show only the latest created container]" \
|
||||
"($help -n --last)"{-n=,--last=}"[Show n last created containers (includes all states)]:n:(1 5 10 25 50)" \
|
||||
"($help)--no-trunc[Do not truncate output]" \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only show container IDs]" \
|
||||
"($help -s --size)"{-s,--size}"[Display total file sizes]" \
|
||||
"($help)--since=[Show only containers created since...]:containers:__docker_complete_containers" && ret=0
|
||||
;;
|
||||
@@ -832,7 +835,7 @@ __docker_container_subcommand() {
|
||||
_arguments $(__docker_arguments) \
|
||||
$opts_help \
|
||||
"($help -t --time)"{-t=,--time=}"[Number of seconds to try to stop for before killing the container]:seconds to before killing:(1 5 10 30 60)" \
|
||||
"($help -)*:containers:__docker_complete_containers_ids" && ret=0
|
||||
"($help -)*:containers:__docker_complete_containers" && ret=0
|
||||
;;
|
||||
(rm)
|
||||
local state
|
||||
@@ -1024,7 +1027,7 @@ __docker_image_subcommand() {
|
||||
$opts_help \
|
||||
"($help -H --human)"{-H,--human}"[Print sizes and dates in human readable format]" \
|
||||
"($help)--no-trunc[Do not truncate output]" \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only show image IDs]" \
|
||||
"($help -)*: :__docker_complete_images" && ret=0
|
||||
;;
|
||||
(import)
|
||||
@@ -1056,7 +1059,7 @@ __docker_image_subcommand() {
|
||||
"($help)*"{-f=,--filter=}"[Filter values]:filter:__docker_complete_images_filters" \
|
||||
"($help)--format=[Pretty-print images using a Go template]:template: " \
|
||||
"($help)--no-trunc[Do not truncate output]" \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only show numeric IDs]" \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only show image IDs]" \
|
||||
"($help -): :__docker_complete_repositories" && ret=0
|
||||
;;
|
||||
(prune)
|
||||
@@ -1076,6 +1079,7 @@ __docker_image_subcommand() {
|
||||
(push)
|
||||
_arguments $(__docker_arguments) \
|
||||
$opts_help \
|
||||
"($help -a --all-tags)"{-a,--all-tags}"[Push all tagged images in the repository]" \
|
||||
"($help)--disable-content-trust[Skip image signing]" \
|
||||
"($help -): :__docker_complete_images" && ret=0
|
||||
;;
|
||||
@@ -1286,7 +1290,7 @@ __docker_network_subcommand() {
|
||||
"($help)--no-trunc[Do not truncate the output]" \
|
||||
"($help)*"{-f=,--filter=}"[Provide filter values]:filter:__docker_network_complete_ls_filters" \
|
||||
"($help)--format=[Pretty-print networks using a Go template]:template: " \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only display numeric IDs]" && ret=0
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only display network IDs]" && ret=0
|
||||
;;
|
||||
(prune)
|
||||
_arguments $(__docker_arguments) \
|
||||
@@ -2214,7 +2218,6 @@ __docker_stack_subcommand() {
|
||||
(deploy|up)
|
||||
_arguments $(__docker_arguments) \
|
||||
$opts_help \
|
||||
"($help)--bundle-file=[Path to a Distributed Application Bundle file]:dab:_files -g \"*.dab\"" \
|
||||
"($help -c --compose-file)"{-c=,--compose-file=}"[Path to a Compose file, or '-' to read from stdin]:compose file:_files -g \"*.(yml|yaml)\"" \
|
||||
"($help)--with-registry-auth[Send registry authentication details to Swarm agents]" \
|
||||
"($help -):stack:__docker_complete_stacks" && ret=0
|
||||
@@ -2668,6 +2671,7 @@ __docker_subcommand() {
|
||||
"($help)*--log-opt=[Default log driver options for containers]:log driver options:__docker_complete_log_options" \
|
||||
"($help)--max-concurrent-downloads[Set the max concurrent downloads for each pull]" \
|
||||
"($help)--max-concurrent-uploads[Set the max concurrent uploads for each push]" \
|
||||
"($help)--max-download-attempts[Set the max download attempts for each pull]" \
|
||||
"($help)--mtu=[Network MTU]:mtu:(0 576 1420 1500 9000)" \
|
||||
"($help)--oom-score-adjust=[Set the oom_score_adj for the daemon]:oom-score:(-500)" \
|
||||
"($help -p --pidfile)"{-p=,--pidfile=}"[Path to use for daemon PID file]:PID file:_files" \
|
||||
@@ -2783,7 +2787,7 @@ __docker_subcommand() {
|
||||
$opts_help \
|
||||
"($help -p --password)"{-p=,--password=}"[Password]:password: " \
|
||||
"($help)--password-stdin[Read password from stdin]" \
|
||||
"($help -u --user)"{-u=,--user=}"[Username]:username: " \
|
||||
"($help -u --username)"{-u=,--username=}"[Username]:username: " \
|
||||
"($help -)1:server: " && ret=0
|
||||
;;
|
||||
(logout)
|
||||
|
||||
@@ -53,24 +53,30 @@ Set `ZSH_DOTENV_PROMPT=false` in your zshrc file if you don't want the confirmat
|
||||
You can also choose the `Always` option when prompted to always allow sourcing the .env file
|
||||
in that directory. See the next section for more details.
|
||||
|
||||
### ZSH_DOTENV_ALLOWED_LIST
|
||||
### ZSH_DOTENV_ALLOWED_LIST, ZSH_DOTENV_DISALLOWED_LIST
|
||||
|
||||
The default behavior of the plugin is to always ask whether to source a dotenv file. There's
|
||||
a **Y**es, **N**o, and **A**lways option. If you choose Always, the directory of the .env file
|
||||
will be added to an allowed list. If a directory is found in this list, the plugin won't ask
|
||||
for confirmation and will instead source the .env file directly.
|
||||
a **Y**es, **N**o, **A**lways and N**e**ver option. If you choose Always, the directory of the .env file
|
||||
will be added to an allowed list; if you choose Never, it will be added to a disallowed list.
|
||||
If a directory is found in either of those lists, the plugin won't ask for confirmation and will
|
||||
instead either source the .env file or proceed without action respectively.
|
||||
|
||||
This allowed list is saved by default in `$ZSH_CACHE_DIR/dotenv-allowed.list`. If you want
|
||||
to change that location, change the `$ZSH_DOTENV_ALLOWED_LIST` variable, like so:
|
||||
The allowed and disallowed lists are saved by default in `$ZSH_CACHE_DIR/dotenv-allowed.list` and
|
||||
`$ZSH_CACHE_DIR/dotenv-disallowed.list` respectively. If you want to change that location,
|
||||
change the `$ZSH_DOTENV_ALLOWED_LIST` and `$ZSH_DOTENV_DISALLOWED_LIST` variables, like so:
|
||||
|
||||
```zsh
|
||||
# in ~/.zshrc, before Oh My Zsh is sourced:
|
||||
ZSH_DOTENV_ALLOWED_LIST=/path/to/dotenv/allowed/list
|
||||
ZSH_DOTENV_DISALLOWED_LIST=/path/to/dotenv/disallowed/list
|
||||
```
|
||||
|
||||
This file is just a list of directories allowed, separated by a newline character. If you want
|
||||
to disallow a directory, just edit this file and remove the line for the directory you want to
|
||||
disallow.
|
||||
The file is just a list of directories, separated by a newline character. If you want
|
||||
to change your decision, just edit the file and remove the line for the directory you want to
|
||||
change.
|
||||
|
||||
NOTE: if a directory is found in both the allowed and disallowed lists, the disallowed list
|
||||
takes preference, _i.e._ the .env file will never be sourced.
|
||||
|
||||
## Version Control
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
# Path to the file containing allowed paths
|
||||
: ${ZSH_DOTENV_ALLOWED_LIST:="${ZSH_CACHE_DIR:-$ZSH/cache}/dotenv-allowed.list"}
|
||||
: ${ZSH_DOTENV_DISALLOWED_LIST:="${ZSH_CACHE_DIR:-$ZSH/cache}/dotenv-disallowed.list"}
|
||||
|
||||
|
||||
## Functions
|
||||
@@ -14,19 +15,26 @@ source_env() {
|
||||
if [[ "$ZSH_DOTENV_PROMPT" != false ]]; then
|
||||
local confirmation dirpath="${PWD:A}"
|
||||
|
||||
# make sure there is an allowed file
|
||||
# make sure there is an (dis-)allowed file
|
||||
touch "$ZSH_DOTENV_ALLOWED_LIST"
|
||||
touch "$ZSH_DOTENV_DISALLOWED_LIST"
|
||||
|
||||
# early return if disallowed
|
||||
if grep -q "$dirpath" "$ZSH_DOTENV_DISALLOWED_LIST" &>/dev/null; then
|
||||
return;
|
||||
fi
|
||||
|
||||
# check if current directory's .env file is allowed or ask for confirmation
|
||||
if ! grep -q "$dirpath" "$ZSH_DOTENV_ALLOWED_LIST" &>/dev/null; then
|
||||
# print same-line prompt and output newline character if necessary
|
||||
echo -n "dotenv: found '$ZSH_DOTENV_FILE' file. Source it? ([Y]es/[n]o/[a]lways) "
|
||||
echo -n "dotenv: found '$ZSH_DOTENV_FILE' file. Source it? ([Y]es/[n]o/[a]lways/n[e]ver) "
|
||||
read -k 1 confirmation; [[ "$confirmation" != $'\n' ]] && echo
|
||||
|
||||
# check input
|
||||
case "$confirmation" in
|
||||
[nN]) return ;;
|
||||
[aA]) echo "$dirpath" >> "$ZSH_DOTENV_ALLOWED_LIST" ;;
|
||||
[eE]) echo "$dirpath" >> "$ZSH_DOTENV_DISALLOWED_LIST"; return ;;
|
||||
*) ;; # interpret anything else as a yes
|
||||
esac
|
||||
fi
|
||||
|
||||
@@ -26,6 +26,16 @@ if "$ZSH/tools/require_tool.sh" emacsclient 24 2>/dev/null ; then
|
||||
# create a new X frame
|
||||
alias eframe='emacsclient --alternate-editor "" --create-frame'
|
||||
|
||||
# Emacs ANSI Term tracking
|
||||
if [[ -n "$INSIDE_EMACS" ]]; then
|
||||
chpwd_emacs() { print -P "\033AnSiTc %d"; }
|
||||
print -P "\033AnSiTc %d" # Track current working directory
|
||||
print -P "\033AnSiTu %n" # Track username
|
||||
|
||||
# add chpwd hook
|
||||
autoload -Uz add-zsh-hook
|
||||
add-zsh-hook chpwd chpwd_emacs
|
||||
fi
|
||||
|
||||
# Write to standard output the path to the file
|
||||
# opened in the current buffer.
|
||||
|
||||
@@ -53,6 +53,6 @@ plugins=(... encode64)
|
||||
```console
|
||||
$ echo "b2gtbXktenNoCg==" | decode64
|
||||
oh-my-zsh
|
||||
$ echo "b2gtbXktenNoCg==" | decode64
|
||||
$ echo "b2gtbXktenNoCg==" | d64
|
||||
oh-my-zsh
|
||||
```
|
||||
|
||||
@@ -23,6 +23,7 @@ plugins=(... extract)
|
||||
| `bz2` | Bzip2 file |
|
||||
| `deb` | Debian package |
|
||||
| `gz` | Gzip file |
|
||||
| `ipa` | iOS app package |
|
||||
| `ipsw` | iOS firmware file |
|
||||
| `jar` | Java Archive |
|
||||
| `lrz` | LRZ archive |
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
_arguments \
|
||||
'(-r --remove)'{-r,--remove}'[Remove archive.]' \
|
||||
"*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|deb|gz|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst)(-.)'" \
|
||||
"*::archive file:_files -g '(#i)*.(7z|Z|apk|aar|bz2|deb|gz|ipa|ipsw|jar|lrz|lz4|lzma|rar|rpm|sublime-package|tar|tar.bz2|tar.gz|tar.lrz|tar.lz|tar.lz4|tar.xz|tar.zma|tar.zst|tbz|tbz2|tgz|tlz|txz|tzst|war|whl|xpi|xz|zip|zst)(-.)'" \
|
||||
&& return 0
|
||||
|
||||
@@ -55,7 +55,7 @@ extract() {
|
||||
(*.lz4) lz4 -d "$1" ;;
|
||||
(*.lzma) unlzma "$1" ;;
|
||||
(*.z) uncompress "$1" ;;
|
||||
(*.zip|*.war|*.jar|*.sublime-package|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d $extract_dir ;;
|
||||
(*.zip|*.war|*.jar|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl) unzip "$1" -d $extract_dir ;;
|
||||
(*.rar) unrar x -ad "$1" ;;
|
||||
(*.rpm) mkdir "$extract_dir" && cd "$extract_dir" && rpm2cpio "../$1" | cpio --quiet -id && cd .. ;;
|
||||
(*.7z) 7za x "$1" ;;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# If they are not set yet, they will be
|
||||
# overwritten with their default values
|
||||
|
||||
default fastfile_dir "${HOME}/.fastfile/"
|
||||
default fastfile_dir "${HOME}/.fastfile"
|
||||
default fastfile_var_prefix "§"
|
||||
|
||||
###########################
|
||||
@@ -78,7 +78,7 @@ function fastfile_print() {
|
||||
# (=> fastfle_print) for each shortcut
|
||||
#
|
||||
function fastfile_ls() {
|
||||
for f in "${fastfile_dir}"/*; do
|
||||
for f in "${fastfile_dir}"/*(NF); do
|
||||
file=`basename "$f"` # To enable simpler handeling of spaces in file names
|
||||
varkey=`echo "$file" | tr " " "_"`
|
||||
|
||||
@@ -104,7 +104,7 @@ function fastfile_rm() {
|
||||
# Generate the aliases for the shortcuts
|
||||
#
|
||||
function fastfile_sync() {
|
||||
for f in "${fastfile_dir}"/*; do
|
||||
for f in "${fastfile_dir}"/*(NF); do
|
||||
file=`basename "$f"` # To enable simpler handeling of spaces in file names
|
||||
varkey=`echo "$file" | tr " " "_"`
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../dnf/dnf.plugin.zsh
|
||||
@@ -1,6 +1,7 @@
|
||||
# Open folder in ForkLift.app or ForkLift2.app from console
|
||||
# Author: Adam Strzelecki nanoant.com, modified by Bodo Tasche bitboxer.de
|
||||
# Updated to support ForkLift 2 and ForkLift 3 by Johan Kaving
|
||||
# Updated to support ForkLift from Setapp by Paul Rudkin
|
||||
#
|
||||
# Usage:
|
||||
# fl [<folder>]
|
||||
@@ -24,6 +25,13 @@ function fl {
|
||||
fi
|
||||
osascript 2>&1 1>/dev/null <<END
|
||||
|
||||
try
|
||||
tell application "Finder"
|
||||
set forkLiftSetapp to name of application file id "com.binarynights.forklift-setapp"
|
||||
end tell
|
||||
on error err_msg number err_num
|
||||
set forkLiftSetapp to null
|
||||
end try
|
||||
try
|
||||
tell application "Finder"
|
||||
set forkLift3 to name of application file id "com.binarynights.ForkLift-3"
|
||||
@@ -46,7 +54,12 @@ function fl {
|
||||
set forkLift to null
|
||||
end try
|
||||
|
||||
if forkLift3 is not null and application forkLift3 is running then
|
||||
if forkLiftSetapp is not null and application forkLiftSetapp is running then
|
||||
tell application forkLiftSetapp
|
||||
activate
|
||||
set forkLiftVersion to version
|
||||
end tell
|
||||
else if forkLift3 is not null and application forkLift3 is running then
|
||||
tell application forkLift3
|
||||
activate
|
||||
set forkLiftVersion to version
|
||||
@@ -62,7 +75,9 @@ function fl {
|
||||
set forkLiftVersion to version
|
||||
end tell
|
||||
else
|
||||
if forkLift3 is not null then
|
||||
if forkLiftSetapp is not null then
|
||||
set appName to forkLiftSetapp
|
||||
else if forkLift3 is not null then
|
||||
set appName to forkLift3
|
||||
else if forkLift2 is not null then
|
||||
set appName to forkLift2
|
||||
|
||||
@@ -52,6 +52,7 @@ Available search contexts are:
|
||||
| mdn | `https://developer.mozilla.org/search?q=` |
|
||||
| nodejs | `https://www.google.com/search?as_sitesearch=nodejs.org/en/docs/&as_q=` |
|
||||
| npmjs | `https://www.npmjs.com/search?q=` |
|
||||
| packagephobia | `https://packagephobia.now.sh/result?p=` |
|
||||
| qunit | `https://api.qunitjs.com/?s=` |
|
||||
| reactjs | `https://google.com/search?as_sitesearch=facebook.github.io/react&as_q=` |
|
||||
| smacss | `https://google.com/search?as_sitesearch=smacss.com&as_q=` |
|
||||
|
||||
@@ -38,6 +38,7 @@ function _frontend() {
|
||||
'mdn: Search in MDN website'
|
||||
'nodejs: Search in NodeJS website'
|
||||
'npmjs: Search in NPMJS website'
|
||||
'packagephobia: Search in Packagephobia website'
|
||||
'qunit: Search in Qunit website'
|
||||
'reactjs: Search in React website'
|
||||
'smacss: Search in SMACSS website'
|
||||
@@ -124,6 +125,9 @@ function _frontend() {
|
||||
bundlephobia)
|
||||
_describe -t points "Warp points" frontend_points && ret=0
|
||||
;;
|
||||
packagephobia)
|
||||
_describe -t points "Warp points" frontend_points && ret=0
|
||||
;;
|
||||
flowtype)
|
||||
_describe -t points "Warp points" frontend_points && ret=0
|
||||
;;
|
||||
|
||||
@@ -19,6 +19,7 @@ alias lodash='frontend lodash'
|
||||
alias mdn='frontend mdn'
|
||||
alias nodejs='frontend nodejs'
|
||||
alias npmjs='frontend npmjs'
|
||||
alias packagephobia='frontend packagephobia'
|
||||
alias qunit='frontend qunit'
|
||||
alias reactjs='frontend reactjs'
|
||||
alias smacss='frontend smacss'
|
||||
@@ -65,6 +66,7 @@ function frontend() {
|
||||
mdn 'https://developer.mozilla.org/search?q='
|
||||
nodejs $(_frontend_fallback 'nodejs.org/en/docs/')
|
||||
npmjs 'https://www.npmjs.com/search?q='
|
||||
packagephobia 'https://packagephobia.now.sh/result?p='
|
||||
qunit 'https://api.qunitjs.com/?s='
|
||||
reactjs $(_frontend_fallback 'reactjs.org/')
|
||||
smacss $(_frontend_fallback 'smacss.com')
|
||||
@@ -82,7 +84,7 @@ function frontend() {
|
||||
print -P "%Uterm%u and what follows is what will be searched for in the %Ucontext%u website,"
|
||||
print -P "and %Ucontext%u is one of the following:"
|
||||
print -P ""
|
||||
print -P " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow,"
|
||||
print -P " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, packagephobia"
|
||||
print -P " dartlang, emberjs, fontello, flowtype, github, html5please, jestjs, jquery, lodash,"
|
||||
print -P " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia"
|
||||
print -P ""
|
||||
@@ -98,7 +100,7 @@ function frontend() {
|
||||
echo ""
|
||||
echo "Valid contexts are:"
|
||||
echo ""
|
||||
echo " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow,"
|
||||
echo " angular, angularjs, bem, bootsnipp, caniuse, codepen, compassdoc, cssflow, packagephobia"
|
||||
echo " dartlang, emberjs, fontello, github, html5please, jest, jquery, lodash,"
|
||||
echo " mdn, npmjs, nodejs, qunit, reactjs, smacss, stackoverflow, unheap, vuejs, bundlephobia"
|
||||
echo ""
|
||||
|
||||
@@ -1,19 +1,52 @@
|
||||
# fzf
|
||||
|
||||
This plugin enables [junegunn's fzf](https://github.com/junegunn/fzf) fuzzy auto-completion and key bindings
|
||||
This plugin tries to find [junegunn's fzf](https://github.com/junegunn/fzf) based on where
|
||||
it's been installed, and enables its fuzzy auto-completion and key bindings.
|
||||
|
||||
To use it, add `fzf` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
# Set fzf installation directory path
|
||||
export FZF_BASE=/path/to/fzf/install/dir
|
||||
|
||||
# Uncomment the following line to disable fuzzy completion
|
||||
# export DISABLE_FZF_AUTO_COMPLETION="true"
|
||||
|
||||
# Uncomment the following line to disable key bindings (CTRL-T, CTRL-R, ALT-C)
|
||||
# export DISABLE_FZF_KEY_BINDINGS="true"
|
||||
|
||||
plugins=(
|
||||
...
|
||||
fzf
|
||||
)
|
||||
plugins=(... fzf)
|
||||
```
|
||||
|
||||
## Settings
|
||||
|
||||
All these settings should go in your zshrc file, before Oh My Zsh is sourced.
|
||||
|
||||
### `FZF_BASE`
|
||||
|
||||
Set to fzf installation directory path:
|
||||
|
||||
```zsh
|
||||
export FZF_BASE=/path/to/fzf/install/dir
|
||||
```
|
||||
|
||||
### `FZF_DEFAULT_COMMAND`
|
||||
|
||||
Set default command to use when input is tty:
|
||||
|
||||
```zsh
|
||||
export FZF_DEFAULT_COMMAND='<your fzf default commmand>'
|
||||
```
|
||||
|
||||
If not set, the plugin will try to set it to these, in the order in which they're found:
|
||||
|
||||
- [`rg`](https://github.com/BurntSushi/ripgrep)
|
||||
- [`fd`](https://github.com/sharkdp/fd)
|
||||
- [`ag`](https://github.com/ggreer/the_silver_searcher)
|
||||
|
||||
### `DISABLE_FZF_AUTO_COMPLETION`
|
||||
|
||||
Set whether to load fzf auto-completion:
|
||||
|
||||
```zsh
|
||||
DISABLE_FZF_AUTO_COMPLETION="true"
|
||||
```
|
||||
|
||||
### `DISABLE_FZF_KEY_BINDINGS`
|
||||
|
||||
Set whether to disable key bindings (CTRL-T, CTRL-R, ALT-C):
|
||||
|
||||
```zsh
|
||||
DISABLE_FZF_KEY_BINDINGS="true"
|
||||
```
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
function setup_using_base_dir() {
|
||||
# Declare all variables local not no mess with outside env in any way
|
||||
local fzf_base
|
||||
local fzf_shell
|
||||
local fzfdirs
|
||||
local dir
|
||||
local fzf_base fzf_shell fzfdirs dir
|
||||
|
||||
test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}"
|
||||
|
||||
@@ -31,38 +27,37 @@ function setup_using_base_dir() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -d "${fzf_base}" ]]; then
|
||||
# Fix fzf shell directory for Arch Linux, NixOS or Void Linux packages
|
||||
if [[ ! -d "${fzf_base}/shell" ]]; then
|
||||
fzf_shell="${fzf_base}"
|
||||
else
|
||||
fzf_shell="${fzf_base}/shell"
|
||||
fi
|
||||
|
||||
# Setup fzf binary path
|
||||
if ! (( ${+commands[fzf]} )) && [[ ! "$PATH" == *$fzf_base/bin* ]]; then
|
||||
export PATH="$PATH:$fzf_base/bin"
|
||||
fi
|
||||
|
||||
# Auto-completion
|
||||
if [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then
|
||||
[[ $- == *i* ]] && source "${fzf_shell}/completion.zsh" 2> /dev/null
|
||||
fi
|
||||
|
||||
# Key bindings
|
||||
if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then
|
||||
source "${fzf_shell}/key-bindings.zsh"
|
||||
fi
|
||||
else
|
||||
if [[ ! -d "${fzf_base}" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Fix fzf shell directory for Arch Linux, NixOS or Void Linux packages
|
||||
if [[ ! -d "${fzf_base}/shell" ]]; then
|
||||
fzf_shell="${fzf_base}"
|
||||
else
|
||||
fzf_shell="${fzf_base}/shell"
|
||||
fi
|
||||
|
||||
# Setup fzf binary path
|
||||
if (( ! ${+commands[fzf]} )) && [[ "$PATH" != *$fzf_base/bin* ]]; then
|
||||
export PATH="$PATH:$fzf_base/bin"
|
||||
fi
|
||||
|
||||
# Auto-completion
|
||||
if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then
|
||||
source "${fzf_shell}/completion.zsh" 2> /dev/null
|
||||
fi
|
||||
|
||||
# Key bindings
|
||||
if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then
|
||||
source "${fzf_shell}/key-bindings.zsh"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function setup_using_debian_package() {
|
||||
(( $+commands[dpkg] )) && dpkg -s fzf &> /dev/null
|
||||
if (( $? )); then
|
||||
# Either not a debian based distro, or no fzf installed. In any case skip ahead
|
||||
if (( ! $+commands[dpkg] )) || ! dpkg -s fzf &>/dev/null; then
|
||||
# Either not a debian based distro, or no fzf installed
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -76,8 +71,8 @@ function setup_using_debian_package() {
|
||||
local key_bindings="/usr/share/doc/fzf/examples/key-bindings.zsh"
|
||||
|
||||
# Auto-completion
|
||||
if [[ $- == *i* ]] && [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then
|
||||
source $completions 2> /dev/null
|
||||
if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then
|
||||
source $completions 2> /dev/null
|
||||
fi
|
||||
|
||||
# Key bindings
|
||||
@@ -88,13 +83,81 @@ function setup_using_debian_package() {
|
||||
return 0
|
||||
}
|
||||
|
||||
function indicate_error() {
|
||||
print "[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.\n"\
|
||||
"Please add \`export FZF_BASE=/path/to/fzf/install/dir\` to your .zshrc" >&2
|
||||
function setup_using_opensuse_package() {
|
||||
# OpenSUSE installs fzf in /usr/bin/fzf
|
||||
# If the command is not found, the package isn't installed
|
||||
(( $+commands[fzf] )) || return 1
|
||||
|
||||
# The fzf-zsh-completion package installs the auto-completion in
|
||||
local completions="/usr/share/zsh/site-functions/_fzf"
|
||||
# The fzf-zsh-completion package installs the key-bindings file in
|
||||
local key_bindings="/etc/zsh_completion.d/fzf-key-bindings"
|
||||
|
||||
# If these are not found: (1) maybe we're not on OpenSUSE, or
|
||||
# (2) maybe the fzf-zsh-completion package isn't installed.
|
||||
if [[ ! -f "$completions" || ! -f "$key_bindings" ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Auto-completion
|
||||
if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then
|
||||
source "$completions" 2>/dev/null
|
||||
fi
|
||||
|
||||
# Key bindings
|
||||
if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then
|
||||
source "$key_bindings" 2>/dev/null
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Check for debian package first, because it easy to short cut
|
||||
# Indicate to user that fzf installation not found if nothing worked
|
||||
setup_using_debian_package || setup_using_base_dir || indicate_error
|
||||
function setup_using_openbsd_package() {
|
||||
# openBSD installs fzf in /usr/local/bin/fzf
|
||||
if [[ "$OSTYPE" != openbsd* ]] || (( ! $+commands[fzf] )); then
|
||||
return 1
|
||||
fi
|
||||
|
||||
unset -f setup_using_debian_package setup_using_base_dir indicate_error
|
||||
# The fzf package installs the auto-completion in
|
||||
local completions="/usr/local/share/zsh/site-functions/_fzf_completion"
|
||||
# The fzf package installs the key-bindings file in
|
||||
local key_bindings="/usr/local/share/zsh/site-functions/_fzf_key_bindings"
|
||||
|
||||
# Auto-completion
|
||||
if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then
|
||||
source "$completions" 2>/dev/null
|
||||
fi
|
||||
|
||||
# Key bindings
|
||||
if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then
|
||||
source "$key_bindings" 2>/dev/null
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function indicate_error() {
|
||||
cat >&2 <<EOF
|
||||
[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.
|
||||
Please add \`export FZF_BASE=/path/to/fzf/install/dir\` to your .zshrc
|
||||
EOF
|
||||
}
|
||||
|
||||
# Indicate to user that fzf installation not found if nothing worked
|
||||
setup_using_openbsd_package \
|
||||
|| setup_using_debian_package \
|
||||
|| setup_using_opensuse_package \
|
||||
|| setup_using_base_dir \
|
||||
|| indicate_error
|
||||
|
||||
unset -f setup_using_opensuse_package setup_using_debian_package setup_using_base_dir indicate_error
|
||||
|
||||
if [[ -z "$FZF_DEFAULT_COMMAND" ]]; then
|
||||
if (( $+commands[rg] )); then
|
||||
export FZF_DEFAULT_COMMAND='rg --files --hidden'
|
||||
elif (( $+commands[fd] )); then
|
||||
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
|
||||
elif (( $+commands[ag] )); then
|
||||
export FZF_DEFAULT_COMMAND='ag -l --hidden -g ""'
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -11,6 +11,9 @@ plugins=(... git-prompt)
|
||||
|
||||
See the [original repository](https://github.com/olivierverdier/zsh-git-prompt).
|
||||
|
||||
## Prerequisites
|
||||
This plugin uses `python`, so your host needs to have it installed
|
||||
|
||||
## Examples
|
||||
|
||||
The prompt may look like the following:
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
# git-remote-branch plugin
|
||||
|
||||
This plugin adds completion for [`grb`](https://github.com/webmat/git_remote_branch),
|
||||
or `git_remote_branch`.
|
||||
|
||||
To use it, add `git-remote-branch` to the plugins array of your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... git-remote-branch)
|
||||
```
|
||||
|
||||
## Deprecation
|
||||
|
||||
[git_remote_branch was archived in 2018](https://github.com/webmat/git_remote_branch#archived),
|
||||
meaning it's not actively maintained anymore. Use at your own risk.
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
_git_remote_branch() {
|
||||
ref=$(git symbolic-ref HEAD 2> /dev/null)
|
||||
if [[ -n $ref ]]; then
|
||||
if (( CURRENT == 2 )); then
|
||||
# first arg: operation
|
||||
compadd create publish rename delete track
|
||||
elif (( CURRENT == 3 )); then
|
||||
# second arg: remote branch name
|
||||
remotes=`git remote | tr '\n' '|' | sed "s/\|$//g"`
|
||||
compadd `git branch -r | grep -v HEAD | sed "s/$remotes\///" | sed "s/ //g"`
|
||||
elif (( CURRENT == 4 )); then
|
||||
# third arg: remote name
|
||||
compadd `git remote`
|
||||
fi
|
||||
else;
|
||||
_files
|
||||
fi
|
||||
}
|
||||
compdef _git_remote_branch grb
|
||||
@@ -19,10 +19,11 @@ plugins=(... git)
|
||||
| gau | git add --update |
|
||||
| gav | git add --verbose |
|
||||
| gap | git apply |
|
||||
| gapt | git apply --3way |
|
||||
| gb | git branch |
|
||||
| gba | git branch -a |
|
||||
| gbd | git branch -d |
|
||||
| gbda | git branch --no-color --merged \| command grep -vE "^(\+\|\*\|\s*(master\|develop\|dev)\s*$)" \| command xargs -n 1 git branch -d |
|
||||
| gbda | git branch --no-color --merged \| command grep -vE "^(\+\|\*\|\s*($(git_main_branch)\|development\|develop\|devel\|dev)\s*$)" \| command xargs -n 1 git branch -d |
|
||||
| gbD | git branch -D |
|
||||
| gbl | git blame -b -w |
|
||||
| gbnm | git branch --no-merged |
|
||||
@@ -46,7 +47,7 @@ plugins=(... git)
|
||||
| gcl | git clone --recurse-submodules |
|
||||
| gclean | git clean -id |
|
||||
| gpristine | git reset --hard && git clean -dffx |
|
||||
| gcm | git checkout master |
|
||||
| gcm | git checkout $(git_main_branch) |
|
||||
| gcd | git checkout develop |
|
||||
| gcmsg | git commit -m |
|
||||
| gco | git checkout |
|
||||
@@ -61,6 +62,7 @@ plugins=(... git)
|
||||
| gdct | git describe --tags $(git rev-list --tags --max-count=1) |
|
||||
| gds | git diff --staged |
|
||||
| gdt | git diff-tree --no-commit-id --name-only -r |
|
||||
| gdnolock | git diff $@ ":(exclude)package-lock.json" ":(exclude)*.lock" |
|
||||
| gdv | git diff -w $@ \| view - |
|
||||
| gdw | git diff --word-diff |
|
||||
| gf | git fetch |
|
||||
@@ -83,7 +85,7 @@ plugins=(... git)
|
||||
| ghh | git help |
|
||||
| gignore | git update-index --assume-unchanged |
|
||||
| gignored | git ls-files -v \| grep "^[[:lower:]]" |
|
||||
| git-svn-dcommit-push | git svn dcommit && git push github master:svntrunk |
|
||||
| git-svn-dcommit-push | git svn dcommit && git push github $(git_main_branch):svntrunk |
|
||||
| gk | gitk --all --branches |
|
||||
| gke | gitk --all $(git log -g --pretty=%h) |
|
||||
| gl | git pull |
|
||||
@@ -100,12 +102,12 @@ plugins=(... git)
|
||||
| glola | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --all |
|
||||
| glog | git log --oneline --decorate --graph |
|
||||
| gloga | git log --oneline --decorate --graph --all |
|
||||
| glp | `_git_log_prettily` |
|
||||
| glp | git log --pretty=\<format\> |
|
||||
| gm | git merge |
|
||||
| gmom | git merge origin/master |
|
||||
| gmom | git merge origin/$(git_main_branch) |
|
||||
| gmt | git mergetool --no-prompt |
|
||||
| gmtvim | git mergetool --no-prompt --tool=vimdiff |
|
||||
| gmum | git merge upstream/master |
|
||||
| gmum | git merge upstream/$(git_main_branch) |
|
||||
| gma | git merge --abort |
|
||||
| gp | git push |
|
||||
| gpd | git push --dry-run |
|
||||
@@ -121,7 +123,7 @@ plugins=(... git)
|
||||
| grbc | git rebase --continue |
|
||||
| grbd | git rebase develop |
|
||||
| grbi | git rebase -i |
|
||||
| grbm | git rebase master |
|
||||
| grbm | git rebase $(git_main_branch) |
|
||||
| grbs | git rebase --skip |
|
||||
| grev | git revert |
|
||||
| grh | git reset |
|
||||
@@ -168,9 +170,21 @@ plugins=(... git)
|
||||
| gupv | git pull --rebase -v |
|
||||
| gupa | git pull --rebase --autostash |
|
||||
| gupav | git pull --rebase --autostash -v |
|
||||
| glum | git pull upstream master |
|
||||
| glum | git pull upstream $(git_main_branch) |
|
||||
| gwch | git whatchanged -p --abbrev-commit --pretty=medium |
|
||||
| gwip | git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]" |
|
||||
| gam | git am |
|
||||
| gamc | git am --continue |
|
||||
| gams | git am --skip |
|
||||
| gama | git am --abort |
|
||||
| gamscp | git am --show-current-patch |
|
||||
|
||||
### Main branch preference
|
||||
|
||||
Following the recent push for removing racially-charged words from our technical vocabulary, the git plugin favors using
|
||||
a branch name other than `master`. In this case, we favor the shorter, neutral and descriptive term `main`. This means
|
||||
that any aliases and functions that previously used `master`, will use `main` if that branch exists. We do this via the
|
||||
function `git_main_branch`.
|
||||
|
||||
### Deprecated aliases
|
||||
|
||||
@@ -194,12 +208,13 @@ These are aliases that have been removed, renamed, or otherwise modified in a wa
|
||||
|
||||
### Current
|
||||
|
||||
| Command | Description |
|
||||
|:-----------------------|:---------------------------------------------------------|
|
||||
| `grename <old> <new>` | Rename `old` branch to `new`, including in origin remote |
|
||||
| current_branch | Return the name of the current branch |
|
||||
| git_current_user_name | Returns the `user.name` config value |
|
||||
| git_current_user_email | Returns the `user.email` config value |
|
||||
| Command | Description |
|
||||
|:-----------------------|:-----------------------------------------------------------------------------|
|
||||
| `grename <old> <new>` | Rename `old` branch to `new`, including in origin remote |
|
||||
| current_branch | Return the name of the current branch |
|
||||
| git_current_user_name | Returns the `user.name` config value |
|
||||
| git_current_user_email | Returns the `user.email` config value |
|
||||
| git_main_branch | Returns the name of the main branch: `main` if it exists, `master` otherwise |
|
||||
|
||||
### Work in Progress (WIP)
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Git version checking
|
||||
autoload -Uz is-at-least
|
||||
git_version="${${(As: :)$(git version 2>/dev/null)}[3]}"
|
||||
|
||||
#
|
||||
# Functions
|
||||
#
|
||||
@@ -25,6 +29,15 @@ function work_in_progress() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if main exists and use instead of master
|
||||
function git_main_branch() {
|
||||
if [[ -n "$(git branch --list main)" ]]; then
|
||||
echo main
|
||||
else
|
||||
echo master
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Aliases
|
||||
# (sorted alphabetically)
|
||||
@@ -38,11 +51,12 @@ alias gapa='git add --patch'
|
||||
alias gau='git add --update'
|
||||
alias gav='git add --verbose'
|
||||
alias gap='git apply'
|
||||
alias gapt='git apply --3way'
|
||||
|
||||
alias gb='git branch'
|
||||
alias gba='git branch -a'
|
||||
alias gbd='git branch -d'
|
||||
alias gbda='git branch --no-color --merged | command grep -vE "^(\+|\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
|
||||
alias gbda='git branch --no-color --merged | command grep -vE "^(\+|\*|\s*($(git_main_branch)|development|develop|devel|dev)\s*$)" | command xargs -n 1 git branch -d'
|
||||
alias gbD='git branch -D'
|
||||
alias gbl='git blame -b -w'
|
||||
alias gbnm='git branch --no-merged'
|
||||
@@ -67,7 +81,7 @@ alias gcf='git config --list'
|
||||
alias gcl='git clone --recurse-submodules'
|
||||
alias gclean='git clean -id'
|
||||
alias gpristine='git reset --hard && git clean -dffx'
|
||||
alias gcm='git checkout master'
|
||||
alias gcm='git checkout $(git_main_branch)'
|
||||
alias gcd='git checkout develop'
|
||||
alias gcmsg='git commit -m'
|
||||
alias gco='git checkout'
|
||||
@@ -85,11 +99,19 @@ alias gds='git diff --staged'
|
||||
alias gdt='git diff-tree --no-commit-id --name-only -r'
|
||||
alias gdw='git diff --word-diff'
|
||||
|
||||
function gdnolock() {
|
||||
git diff "$@" ":(exclude)package-lock.json" ":(exclude)*.lock"
|
||||
}
|
||||
compdef _git gdnolock=git-diff
|
||||
|
||||
function gdv() { git diff -w "$@" | view - }
|
||||
compdef _git gdv=git-diff
|
||||
|
||||
alias gf='git fetch'
|
||||
alias gfa='git fetch --all --prune'
|
||||
# --jobs=<n> was added in git 2.8
|
||||
is-at-least 2.8 "$git_version" \
|
||||
&& alias gfa='git fetch --all --prune --jobs=10' \
|
||||
|| alias gfa='git fetch --all --prune'
|
||||
alias gfo='git fetch origin'
|
||||
|
||||
alias gfg='git ls-files | grep'
|
||||
@@ -154,7 +176,7 @@ alias ghh='git help'
|
||||
|
||||
alias gignore='git update-index --assume-unchanged'
|
||||
alias gignored='git ls-files -v | grep "^[[:lower:]]"'
|
||||
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
|
||||
alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk'
|
||||
|
||||
alias gk='\gitk --all --branches'
|
||||
alias gke='\gitk --all $(git log -g --pretty=%h)'
|
||||
@@ -176,10 +198,10 @@ alias gloga='git log --oneline --decorate --graph --all'
|
||||
alias glp="_git_log_prettily"
|
||||
|
||||
alias gm='git merge'
|
||||
alias gmom='git merge origin/master'
|
||||
alias gmom='git merge origin/$(git_main_branch)'
|
||||
alias gmt='git mergetool --no-prompt'
|
||||
alias gmtvim='git mergetool --no-prompt --tool=vimdiff'
|
||||
alias gmum='git merge upstream/master'
|
||||
alias gmum='git merge upstream/$(git_main_branch)'
|
||||
alias gma='git merge --abort'
|
||||
|
||||
alias gp='git push'
|
||||
@@ -197,7 +219,7 @@ alias grba='git rebase --abort'
|
||||
alias grbc='git rebase --continue'
|
||||
alias grbd='git rebase develop'
|
||||
alias grbi='git rebase -i'
|
||||
alias grbm='git rebase master'
|
||||
alias grbm='git rebase $(git_main_branch)'
|
||||
alias grbs='git rebase --skip'
|
||||
alias grev='git revert'
|
||||
alias grh='git reset'
|
||||
@@ -225,8 +247,7 @@ alias gss='git status -s'
|
||||
alias gst='git status'
|
||||
|
||||
# use the default stash push on git 2.13 and newer
|
||||
autoload -Uz is-at-least
|
||||
is-at-least 2.13 "$(git --version 2>/dev/null | awk '{print $3}')" \
|
||||
is-at-least 2.13 "$git_version" \
|
||||
&& alias gsta='git stash push' \
|
||||
|| alias gsta='git stash save'
|
||||
|
||||
@@ -252,11 +273,17 @@ alias gup='git pull --rebase'
|
||||
alias gupv='git pull --rebase -v'
|
||||
alias gupa='git pull --rebase --autostash'
|
||||
alias gupav='git pull --rebase --autostash -v'
|
||||
alias glum='git pull upstream master'
|
||||
alias glum='git pull upstream $(git_main_branch)'
|
||||
|
||||
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 --no-gpg-sign -m "--wip-- [skip ci]"'
|
||||
|
||||
alias gam='git am'
|
||||
alias gamc='git am --continue'
|
||||
alias gams='git am --skip'
|
||||
alias gama='git am --abort'
|
||||
alias gamscp='git am --show-current-patch'
|
||||
|
||||
function grename() {
|
||||
if [[ -z "$1" || -z "$2" ]]; then
|
||||
echo "Usage: $0 old_branch new_branch"
|
||||
@@ -270,3 +297,5 @@ function grename() {
|
||||
git push --set-upstream origin "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
unset git_version
|
||||
|
||||
@@ -30,7 +30,7 @@ if [ -z "$script" ]; then
|
||||
local -a locations
|
||||
local e
|
||||
locations=(
|
||||
$(dirname ${funcsourcetrace[1]%:*})/git-completion.bash
|
||||
"$(dirname ${funcsourcetrace[1]%:*})/git-completion.bash"
|
||||
'/etc/bash_completion.d/git' # fedora, old debian
|
||||
'/usr/share/bash-completion/completions/git' # arch, ubuntu, new debian
|
||||
'/usr/share/bash-completion/git' # gentoo
|
||||
@@ -39,7 +39,7 @@ if [ -z "$script" ]; then
|
||||
test -f $e && script="$e" && break
|
||||
done
|
||||
fi
|
||||
GIT_SOURCING_ZSH_COMPLETION=y . "$script"
|
||||
ZSH_VERSION='' . "$script"
|
||||
|
||||
__gitcomp ()
|
||||
{
|
||||
@@ -93,22 +93,13 @@ __gitcomp_nl_append ()
|
||||
compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
|
||||
}
|
||||
|
||||
__gitcomp_file_direct ()
|
||||
{
|
||||
emulate -L zsh
|
||||
|
||||
local IFS=$'\n'
|
||||
compset -P '*[=:]'
|
||||
compadd -f -- ${=1} && _ret=0
|
||||
}
|
||||
|
||||
__gitcomp_file ()
|
||||
{
|
||||
emulate -L zsh
|
||||
|
||||
local IFS=$'\n'
|
||||
compset -P '*[=:]'
|
||||
compadd -p "${2-}" -f -- ${=1} && _ret=0
|
||||
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
|
||||
}
|
||||
|
||||
__git_zsh_bash_func ()
|
||||
@@ -232,8 +223,10 @@ _git ()
|
||||
|
||||
if (( $+functions[__${service}_zsh_main] )); then
|
||||
__${service}_zsh_main
|
||||
else
|
||||
elif (( $+functions[__${service}_main] )); then
|
||||
emulate ksh -c __${service}_main
|
||||
elif (( $+functions[_${service}] )); then
|
||||
emulate ksh -c _${service}
|
||||
fi
|
||||
|
||||
let _ret && _default && _ret=0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -219,7 +219,7 @@ __git_ps1_show_upstream ()
|
||||
if [[ -n "$count" && -n "$name" ]]; then
|
||||
__git_ps1_upstream_name=$(git rev-parse \
|
||||
--abbrev-ref "$upstream" 2>/dev/null)
|
||||
if [ "$pcmode" = yes ] && [ "$ps1_expanded" = yes ]; then
|
||||
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
|
||||
p="$p \${__git_ps1_upstream_name}"
|
||||
else
|
||||
p="$p ${__git_ps1_upstream_name}"
|
||||
@@ -237,7 +237,7 @@ __git_ps1_show_upstream ()
|
||||
# to build a gitstring.
|
||||
__git_ps1_colorize_gitstring ()
|
||||
{
|
||||
if [[ -n "${ZSH_VERSION-}" ]]; then
|
||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
||||
local c_red='%F{red}'
|
||||
local c_green='%F{green}'
|
||||
local c_lblue='%F{blue}'
|
||||
@@ -255,7 +255,7 @@ __git_ps1_colorize_gitstring ()
|
||||
local flags_color="$c_lblue"
|
||||
|
||||
local branch_color=""
|
||||
if [ "$detached" = no ]; then
|
||||
if [ $detached = no ]; then
|
||||
branch_color="$ok_color"
|
||||
else
|
||||
branch_color="$bad_color"
|
||||
@@ -508,13 +508,13 @@ __git_ps1 ()
|
||||
|
||||
# NO color option unless in PROMPT_COMMAND mode or it's Zsh
|
||||
if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
||||
if [ "$pcmode" = yes ] || [ -n "${ZSH_VERSION-}" ]; then
|
||||
if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then
|
||||
__git_ps1_colorize_gitstring
|
||||
fi
|
||||
fi
|
||||
|
||||
b=${b##refs/heads/}
|
||||
if [ "$pcmode" = yes ] && [ "$ps1_expanded" = yes ]; then
|
||||
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
|
||||
__git_ps1_branch_name=$b
|
||||
b="\${__git_ps1_branch_name}"
|
||||
fi
|
||||
@@ -522,7 +522,7 @@ __git_ps1 ()
|
||||
local f="$w$i$s$u"
|
||||
local gitstring="$c$b${f:+$z$f}$r$p"
|
||||
|
||||
if [ "$pcmode" = yes ]; then
|
||||
if [ $pcmode = yes ]; then
|
||||
if [ "${__git_printf_supports_v-}" != yes ]; then
|
||||
gitstring=$(printf -- "$printf_format" "$gitstring")
|
||||
else
|
||||
|
||||
@@ -17,6 +17,9 @@ Then just press `SPACE` to trigger the expansion of a command you've written.
|
||||
If you only want to insert a space without expanding the command line, press
|
||||
`CTRL`+`SPACE`.
|
||||
|
||||
if you would like to filter out any values from expanding set `GLOBALIAS_FILTER_VALUES` to
|
||||
an array of said values. See [Filtered values](#filtered-values).
|
||||
|
||||
## Examples
|
||||
|
||||
#### Glob expressions
|
||||
@@ -37,7 +40,6 @@ $ ls folder/file.json anotherfolder/another.json
|
||||
$ mkdir "`date -R`"
|
||||
# expands to
|
||||
$ mkdir Tue,\ 04\ Oct\ 2016\ 13:54:03\ +0300
|
||||
|
||||
```
|
||||
|
||||
#### Aliases
|
||||
@@ -60,3 +62,18 @@ $ S<space>
|
||||
# expands to:
|
||||
$ sudo systemctl
|
||||
```
|
||||
|
||||
#### Filtered values
|
||||
|
||||
```
|
||||
# .zshrc
|
||||
alias l='ls -lh'
|
||||
alias la='ls --color=auto -lah'
|
||||
GLOBALIAS_FILTER_VALUES=(l)
|
||||
|
||||
$ l<space>
|
||||
# does not expand
|
||||
$ la<space>
|
||||
# expands to:
|
||||
$ ls --color=auto -lah
|
||||
```
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
globalias() {
|
||||
zle _expand_alias
|
||||
zle expand-word
|
||||
# Get last word to the left of the cursor:
|
||||
# (z) splits into words using shell parsing
|
||||
# (A) makes it an array even if there's only one element
|
||||
local word=${${(Az)LBUFFER}[-1]}
|
||||
if [[ $GLOBALIAS_FILTER_VALUES[(Ie)$word] -eq 0 ]]; then
|
||||
zle _expand_alias
|
||||
zle expand-word
|
||||
fi
|
||||
zle self-insert
|
||||
}
|
||||
zle -N globalias
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../golang/golang.plugin.zsh
|
||||
@@ -41,7 +41,7 @@ __go_tool_complete() {
|
||||
return
|
||||
fi
|
||||
build_flags=(
|
||||
'-a[force reinstallation of packages that are already up-to-date]'
|
||||
'-a[force reinstallation of packages that are already up to date]'
|
||||
'-n[print the commands but do not run them]'
|
||||
'-p[number of parallel builds]:number'
|
||||
'-race[enable data race detection]'
|
||||
|
||||
@@ -116,9 +116,9 @@ __gradle-generate-tasks-cache() {
|
||||
# Reuse Gradle Daemon if IDLE but don't start a new one.
|
||||
local gradle_tasks_output
|
||||
if [[ ! -z "$($gradle_cmd --status 2>/dev/null | grep IDLE)" ]]; then
|
||||
gradle_tasks_output="$($gradle_cmd --daemon --build-file $gradle_build_file -q tasks --all 2>/dev/null)"
|
||||
gradle_tasks_output="$($gradle_cmd --daemon --build-file $gradle_build_file --console plain -q tasks --all 2>/dev/null)"
|
||||
else
|
||||
gradle_tasks_output="$($gradle_cmd --no-daemon --build-file $gradle_build_file -q tasks --all 2>/dev/null)"
|
||||
gradle_tasks_output="$($gradle_cmd --no-daemon --build-file $gradle_build_file --console plain -q tasks --all 2>/dev/null)"
|
||||
fi
|
||||
local gradle_all_tasks="" root_tasks="" subproject_tasks="" output_line
|
||||
local -a match
|
||||
|
||||
@@ -11,4 +11,10 @@ plugins=(... httpie)
|
||||
|
||||
It uses completion from [zsh-completions](https://github.com/zsh-users/zsh-completions).
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command |
|
||||
| ------------ | ---------------------------------------------------------------- |
|
||||
| `https` | `http --default-scheme=https` |
|
||||
|
||||
**Maintainer:** [lululau](https://github.com/lululau)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
jenvdirs=("$HOME/.jenv" "/usr/local" "/usr/local/jenv" "/opt/jenv")
|
||||
jenvdirs=("$HOME/.jenv" "/usr/local/bin/jenv" "/usr/local/jenv" "/opt/jenv")
|
||||
|
||||
FOUND_JENV=0
|
||||
for jenvdir in $jenvdirs; do
|
||||
|
||||
@@ -19,6 +19,7 @@ jira # performs the default action
|
||||
|
||||
jira new # opens a new issue
|
||||
jira dashboard # opens your JIRA dashboard
|
||||
jira tempo # opens your JIRA Tempo
|
||||
jira reported [username] # queries for issues reported by a user
|
||||
jira assigned [username] # queries for issues assigned to a user
|
||||
jira myissues # queries for you own issues
|
||||
|
||||
@@ -5,6 +5,7 @@ local -a _1st_arguments
|
||||
_1st_arguments=(
|
||||
'new:create a new issue'
|
||||
'dashboard:open the dashboard'
|
||||
'tempo:open the tempo'
|
||||
'reported:search for issues reported by a user'
|
||||
'assigned:search for issues assigned to a user'
|
||||
'branch:open the issue named after the git branch of the current directory'
|
||||
|
||||
@@ -54,6 +54,9 @@ function jira() {
|
||||
else
|
||||
open_command "${jira_url}/secure/Dashboard.jspa"
|
||||
fi
|
||||
elif [[ "$action" == "tempo" ]]; then
|
||||
echo "Opening tempo"
|
||||
open_command "${jira_url}/secure/Tempo.jspa"
|
||||
elif [[ "$action" == "dumpconfig" ]]; then
|
||||
echo "JIRA_URL=$jira_url"
|
||||
echo "JIRA_PREFIX=$jira_prefix"
|
||||
|
||||
@@ -29,7 +29,7 @@ curl https://coderwall.com/bobwilliams.json | pp_json
|
||||
- **is_json**:
|
||||
|
||||
```sh
|
||||
# pretty print the contents of an existing json file
|
||||
# Validate if file's content conforms to a valid JSON schema
|
||||
less data.json | is_json
|
||||
```
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
(( $+commands[keychain] )) || return
|
||||
|
||||
# Define SHORT_HOST if not defined (%m = host name up to first .)
|
||||
SHORT_HOST=${SHORT_HOST:-${(%):-%m}}
|
||||
|
||||
function _start_agent() {
|
||||
function {
|
||||
local agents
|
||||
local -a identities
|
||||
local -a options
|
||||
@@ -28,8 +30,3 @@ function _start_agent() {
|
||||
[ -f "$_keychain_env_sh" ] && . "$_keychain_env_sh"
|
||||
[ -f "$_keychain_env_sh_gpg" ] && . "$_keychain_env_sh_gpg"
|
||||
}
|
||||
|
||||
_start_agent
|
||||
|
||||
# tidy up after ourselves
|
||||
unfunction _start_agent
|
||||
|
||||
@@ -6,14 +6,6 @@ configured on `kubectl` to your Bash/Zsh prompt strings (i.e. the `$PS1`).
|
||||
|
||||
Inspired by several tools used to simplify usage of `kubectl`.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Installing
|
||||
|
||||
### MacOS
|
||||
|
||||
@@ -184,7 +184,7 @@ _kube_ps1_file_newer_than() {
|
||||
local check_time=$2
|
||||
|
||||
if [[ "${KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||
mtime=$(zstat -L +mtime "${file}")
|
||||
mtime=$(zstat +mtime "${file}")
|
||||
elif stat -c "%s" /dev/null &> /dev/null; then
|
||||
# GNU stat
|
||||
mtime=$(stat -L -c %Y "${file}")
|
||||
|
||||
@@ -22,7 +22,7 @@ plugins=(... kubectl)
|
||||
| kcsc | `kubectl config set-context` | Set a context entry in kubeconfig |
|
||||
| kcdc | `kubectl config delete-context` | Delete the specified context from the kubeconfig |
|
||||
| kccc | `kubectl config current-context` | Display the current-context |
|
||||
| kcgc | `kubectl config get-contexts` | List of contexts available
|
||||
| kcgc | `kubectl config get-contexts` | List of contexts available
|
||||
| | | **General aliases** |
|
||||
| kdel | `kubectl delete` | Delete resources by filenames, stdin, resources and names, or by resources and label selector |
|
||||
| kdelf | `kubectl delete -f` | Delete a pod using the type and name specified in -f argument |
|
||||
@@ -33,7 +33,8 @@ plugins=(... kubectl)
|
||||
| kep | `kubectl edit pods` | Edit pods from the default editor |
|
||||
| kdp | `kubectl describe pods` | Describe all pods |
|
||||
| kdelp | `kubectl delete pods` | Delete all pods matching passed arguments |
|
||||
| kgpl | `kgp -l` | Get pod by label. Example: `kgpl "app=myapp" -n myns` |
|
||||
| kgpl | `kgp -l` | Get pods by label. Example: `kgpl "app=myapp" -n myns` |
|
||||
| kgpn | `kgp -n` | Get pods by namespace. Example: `kgpn kube-system` |
|
||||
| | | **Service management** |
|
||||
| kgs | `kubectl get svc` | List all services in ps output format |
|
||||
| kgsw | `kgs --watch` | After listing all services, watch for changes |
|
||||
@@ -90,13 +91,13 @@ plugins=(... kubectl)
|
||||
| keno | `kubectl edit node` | Edit nodes resource from the default editor |
|
||||
| kdno | `kubectl describe node` | Describe node resource in detail |
|
||||
| kdelno | `kubectl delete node` | Delete the node |
|
||||
| | | **Persistent Volume Claim management** |
|
||||
| | | **Persistent Volume Claim management** |
|
||||
| kgpvc | `kubectl get pvc` | List all PVCs |
|
||||
| kgpvcw | `kgpvc --watch` | After listing/getting the requested object, watch for changes |
|
||||
| kepvc | `kubectl edit pvc` | Edit pvcs from the default editor |
|
||||
| kdpvc | `kubectl describe pvc` | Descirbe all pvcs |
|
||||
| kdpvc | `kubectl describe pvc` | Describe all pvcs |
|
||||
| kdelpvc | `kubectl delete pvc` | Delete all pvcs matching passed arguments |
|
||||
| | | |
|
||||
| | | **StatefulSets management** |
|
||||
| kgss | `kubectl get statefulset` | List the statefulsets in ps format |
|
||||
| kgssw | `kgss --watch` | After getting the list of statefulsets, watch for changes |
|
||||
| kgsswide| `kgss -o wide` | After getting the statefulsets, output in plain-text format with any additional information |
|
||||
@@ -105,3 +106,26 @@ plugins=(... kubectl)
|
||||
| kdelss | `kubectl delete statefulset` | Delete the statefulset |
|
||||
| ksss | `kubectl scale statefulset` | Scale a statefulset |
|
||||
| krsss | `kubectl rollout status statefulset`| Check the rollout status of a deployment |
|
||||
| | | **Service Accounts management** |
|
||||
| kgsa | `kubectl get sa` | List all service accounts |
|
||||
| kdsa | `kubectl describe sa` | Describe a service account in details |
|
||||
| kdelsa | `kubectl delete sa` | Delete the service account |
|
||||
| | | **DaemonSet management** |
|
||||
| kgds | `kubectl get daemonset` | List all DaemonSets in ps output format |
|
||||
| kgdsw | `kgds --watch` | After listing all DaemonSets, watch for changes |
|
||||
| keds | `kubectl edit daemonset` | Edit DaemonSets from the default editor |
|
||||
| kdds | `kubectl describe daemonset` | Describe all DaemonSets in detail |
|
||||
| kdelds | `kubectl delete daemonset` | Delete all DaemonSets matching passed argument |
|
||||
| | | **CronJob management** |
|
||||
| kgcj | `kubectl get cronjob` | List all CronJobs in ps output format |
|
||||
| kecj | `kubectl edit cronjob` | Edit CronJob from the default editor |
|
||||
| kdcj | `kubectl describe cronjob` | Describe a CronJob in details |
|
||||
| kdelcj | `kubectl delete cronjob` | Delete the CronJob |
|
||||
|
||||
## Wrappers
|
||||
|
||||
This plugin provides 3 wrappers to colorize kubectl output in JSON and YAML using various tools (which must be installed):
|
||||
|
||||
- `kj`: JSON, colorized with [`jq`](https://stedolan.github.io/jq/).
|
||||
- `kjx`: JSON, colorized with [`fx`](https://github.com/antonmedv/fx).
|
||||
- `ky`: YAML, colorized with [`yh`](https://github.com/andreazorzetto/yh).
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
if (( $+commands[kubectl] )); then
|
||||
__KUBECTL_COMPLETION_FILE="${ZSH_CACHE_DIR}/kubectl_completion"
|
||||
|
||||
if [[ ! -f $__KUBECTL_COMPLETION_FILE ]]; then
|
||||
if [[ ! -f $__KUBECTL_COMPLETION_FILE || ! -s $__KUBECTL_COMPLETION_FILE ]]; then
|
||||
kubectl completion zsh >! $__KUBECTL_COMPLETION_FILE
|
||||
fi
|
||||
|
||||
@@ -47,6 +47,9 @@ alias kdelp='kubectl delete pods'
|
||||
# get pod by label: kgpl "app=myapp" -n myns
|
||||
alias kgpl='kgp -l'
|
||||
|
||||
# get pod by namespace: kgpn kube-system"
|
||||
alias kgpn='kgp -n'
|
||||
|
||||
# Service management.
|
||||
alias kgs='kubectl get svc'
|
||||
alias kgsa='kubectl get svc --all-namespaces'
|
||||
@@ -147,3 +150,31 @@ alias kepvc='kubectl edit pvc'
|
||||
alias kdpvc='kubectl describe pvc'
|
||||
alias kdelpvc='kubectl delete pvc'
|
||||
|
||||
# Service account management.
|
||||
alias kgsa="kubectl get sa"
|
||||
alias kdsa="kubectl describe sa"
|
||||
alias kdelsa="kubectl delete sa"
|
||||
|
||||
# DaemonSet management.
|
||||
alias kgds='kubectl get daemonset'
|
||||
alias kgdsw='kgds --watch'
|
||||
alias keds='kubectl edit daemonset'
|
||||
alias kdds='kubectl describe daemonset'
|
||||
alias kdelds='kubectl delete daemonset'
|
||||
|
||||
# CronJob management.
|
||||
alias kgcj='kubectl get cronjob'
|
||||
alias kecj='kubectl edit cronjob'
|
||||
alias kdcj='kubectl describe cronjob'
|
||||
alias kdelcj='kubectl delete cronjob'
|
||||
|
||||
# Only run if the user actually has kubectl installed
|
||||
if (( ${+_comps[kubectl]} )); then
|
||||
kj() { kubectl "$@" -o json | jq; }
|
||||
kjx() { kubectl "$@" -o json | fx; }
|
||||
ky() { kubectl "$@" -o yaml | yh; }
|
||||
|
||||
compdef kj=kubectl
|
||||
compdef kjx=kubectl
|
||||
compdef ky=kubectl
|
||||
fi
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
# Alias
|
||||
alias la5='php artisan'
|
||||
alias la5cache='php artisan cache:clear'
|
||||
alias la5routes='php artisan route:list'
|
||||
alias la5vendor='php artisan vendor:publish'
|
||||
|
||||
# Laravel5 basic command completion
|
||||
_laravel5_get_command_list () {
|
||||
php artisan --raw --no-ansi list | sed "s/[[:space:]].*//g"
|
||||
php artisan --raw --no-ansi list | sed "s/[[:space:]].*//g"
|
||||
}
|
||||
|
||||
_laravel5 () {
|
||||
if [ -f artisan ]; then
|
||||
compadd `_laravel5_get_command_list`
|
||||
if [[ -f artisan ]]; then
|
||||
compadd $(_laravel5_get_command_list)
|
||||
fi
|
||||
}
|
||||
|
||||
compdef _laravel5 artisan
|
||||
compdef _laravel5 la5
|
||||
|
||||
#Alias
|
||||
alias la5='php artisan'
|
||||
|
||||
alias la5cache='php artisan cache:clear'
|
||||
alias la5routes='php artisan route:list'
|
||||
alias la5vendor='php artisan vendor:publish'
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
# Pressing enter in a git directory runs `git status`
|
||||
# in other directories `ls`
|
||||
magic-enter () {
|
||||
|
||||
# If commands are not already set, use the defaults
|
||||
[ -z "$MAGIC_ENTER_GIT_COMMAND" ] && MAGIC_ENTER_GIT_COMMAND="git status -u ."
|
||||
[ -z "$MAGIC_ENTER_OTHER_COMMAND" ] && MAGIC_ENTER_OTHER_COMMAND="ls -lh ."
|
||||
@@ -20,5 +19,9 @@ magic-enter () {
|
||||
zle accept-line
|
||||
fi
|
||||
}
|
||||
|
||||
zle -N magic-enter
|
||||
bindkey "^M" magic-enter
|
||||
|
||||
bindkey -M emacs "^M" magic-enter
|
||||
bindkey -M vicmd "^M" magic-enter
|
||||
bindkey -M viins "^M" magic-enter
|
||||
|
||||
@@ -16,16 +16,22 @@ man-command-line() {
|
||||
# if there is no command typed, use the last command
|
||||
[[ -z "$BUFFER" ]] && zle up-history
|
||||
|
||||
# prepend man to only the first part of the typed command
|
||||
# if typed command begins with man, do nothing
|
||||
[[ "$BUFFER" = man\ * ]] && return
|
||||
|
||||
# get command and possible subcommand
|
||||
# http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
|
||||
[[ "$BUFFER" != man\ * ]] && BUFFER="man ${${(Az)BUFFER}[1]}"
|
||||
local -a args
|
||||
args=(${${(Az)BUFFER}[1]} ${${(Az)BUFFER}[2]})
|
||||
|
||||
# check if man page exists for command and first argument
|
||||
if man "${args[1]}-${args[2]}" >/dev/null 2>&1; then
|
||||
BUFFER="man $args"
|
||||
else
|
||||
BUFFER="man ${args[1]}"
|
||||
fi
|
||||
}
|
||||
|
||||
zle -N man-command-line
|
||||
# Defined shortcut keys: [Esc]man
|
||||
bindkey "\e"man man-command-line
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Also, you might want to use man-preview included in 'osx' plugin
|
||||
# just substitute "man" in the function with "man-preview" after you included OS X in
|
||||
# the .zshrc
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# Autocompletion for Minikube.
|
||||
#
|
||||
if (( $+commands[minikube] )); then
|
||||
__MINICUBE_COMPLETION_FILE="${ZSH_CACHE_DIR}/minicube_completion"
|
||||
__MINIKUBE_COMPLETION_FILE="${ZSH_CACHE_DIR}/minikube_completion"
|
||||
|
||||
if [[ ! -f $__MINICUBE_COMPLETION_FILE ]]; then
|
||||
minikube completion zsh >! $__MINICUBE_COMPLETION_FILE
|
||||
if [[ ! -f $__MINIKUBE_COMPLETION_FILE ]]; then
|
||||
minikube completion zsh >! $__MINIKUBE_COMPLETION_FILE
|
||||
fi
|
||||
|
||||
[[ -f $__MINICUBE_COMPLETION_FILE ]] && source $__MINICUBE_COMPLETION_FILE
|
||||
[[ -f $__MINIKUBE_COMPLETION_FILE ]] && source $__MINIKUBE_COMPLETION_FILE
|
||||
|
||||
unset __MINICUBE_COMPLETION_FILE
|
||||
unset __MINIKUBE_COMPLETION_FILE
|
||||
fi
|
||||
|
||||
@@ -12,7 +12,7 @@ _mix_does_task_list_need_generating () {
|
||||
}
|
||||
|
||||
_mix_generate () {
|
||||
mix help | grep -v 'iex -S' | tail -n +2 | cut -d " " -f 2 > .mix_tasks
|
||||
mix help | grep '^mix [^ ]' | sed -E "s/mix ([^ ]*) *# (.*)/\1:\2/" > .mix_tasks
|
||||
}
|
||||
|
||||
_mix () {
|
||||
@@ -21,7 +21,8 @@ _mix () {
|
||||
echo "\nGenerating .mix_tasks..." > /dev/stderr
|
||||
_mix_generate
|
||||
fi
|
||||
compadd `cat .mix_tasks`
|
||||
local tasks=(${(f)"$(cat .mix_tasks)"})
|
||||
_describe 'tasks' tasks
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ if it's found, or the mvn command otherwise.
|
||||
| `mvn!` | `mvn -f <root>/pom.xml` |
|
||||
| `mvnag` | `mvn archetype:generate` |
|
||||
| `mvnboot` | `mvn spring-boot:run` |
|
||||
| `mvnqdev` | `mvn quarkus:dev` |
|
||||
| `mvnc` | `mvn clean` |
|
||||
| `mvncd` | `mvn clean deploy` |
|
||||
| `mvnce` | `mvn clean eclipse:clean eclipse:eclipse` |
|
||||
@@ -36,6 +37,7 @@ if it's found, or the mvn command otherwise.
|
||||
| `mvndocs` | `mvn dependency:resolve -Dclassifier=javadoc` |
|
||||
| `mvndt` | `mvn dependency:tree` |
|
||||
| `mvne` | `mvn eclipse:eclipse` |
|
||||
| `mvnfmt` | `mvn fmt:format` |
|
||||
| `mvnjetty` | `mvn jetty:run` |
|
||||
| `mvnp` | `mvn package` |
|
||||
| `mvns` | `mvn site` |
|
||||
|
||||
@@ -59,8 +59,10 @@ alias mvnd='mvn deploy'
|
||||
alias mvndocs='mvn dependency:resolve -Dclassifier=javadoc'
|
||||
alias mvndt='mvn dependency:tree'
|
||||
alias mvne='mvn eclipse:eclipse'
|
||||
alias mvnfmt='mvn fmt:format'
|
||||
alias mvnjetty='mvn jetty:run'
|
||||
alias mvnp='mvn package'
|
||||
alias mvnqdev='mvn quarkus:dev'
|
||||
alias mvns='mvn site'
|
||||
alias mvnsrc='mvn dependency:sources'
|
||||
alias mvnt='mvn test'
|
||||
@@ -71,7 +73,7 @@ alias mvn-updates='mvn versions:display-dependency-updates'
|
||||
|
||||
function listMavenCompletions {
|
||||
local file new_file
|
||||
local -a profiles POM_FILES
|
||||
local -a profiles POM_FILES modules
|
||||
|
||||
# Root POM
|
||||
POM_FILES=(~/.m2/settings.xml)
|
||||
@@ -107,6 +109,9 @@ function listMavenCompletions {
|
||||
profiles+=($(sed 's/<!--.*-->//' "$file" | sed '/<!--/,/-->/d' | grep -e "<profile>" -A 1 | grep -e "<id>.*</id>" | sed 's?.*<id>\(.*\)<\/id>.*?-P\1?'))
|
||||
done
|
||||
|
||||
# List modules
|
||||
modules=($(find **/pom.xml -type f | grep -v '/target/classes/META-INF/' | grep '/pom.xml' |sed 's|\(.*\)/pom\.xml|\1|'))
|
||||
|
||||
reply=(
|
||||
# common lifecycle
|
||||
clean initialize process-resources compile process-test-resources test-compile test package verify install deploy site
|
||||
@@ -183,6 +188,8 @@ function listMavenCompletions {
|
||||
tomee:run tomee:run-war tomee:run-war-only tomee:stop tomee:deploy tomee:undeploy
|
||||
# spring-boot
|
||||
spring-boot:run spring-boot:repackage
|
||||
# quarkus
|
||||
quarkus:dev quarkus:list-extensions quarkus:add-extension quarkus:add-extensions quarkus:generate-config quarkus:help
|
||||
# exec
|
||||
exec:exec exec:java
|
||||
# versions
|
||||
@@ -267,8 +274,8 @@ function listMavenCompletions {
|
||||
stage:copy
|
||||
# toolchain
|
||||
toolchain:toolchain
|
||||
#liberty
|
||||
liberty:clean-server liberty:compile-jsp liberty:configure-arquillian liberty:create-server liberty:debug liberty:debug-server liberty:deploy liberty:dev liberty:display-url liberty:dump-server liberty:install-apps liberty:install-feature liberty:install-server liberty:java-dump-server liberty:package-server liberty:run liberty:run-server liberty:server-status liberty:start liberty:start-server liberty:status liberty:stop liberty:stop-server liberty:test-start-server liberty:test-stop-server liberty:undeploy liberty:uninstall-feature
|
||||
#liberty
|
||||
liberty:clean-server liberty:compile-jsp liberty:configure-arquillian liberty:create-server liberty:debug liberty:debug-server liberty:deploy liberty:dev liberty:display-url liberty:dump-server liberty:install-apps liberty:install-feature liberty:install-server liberty:java-dump-server liberty:package-server liberty:run liberty:run-server liberty:server-status liberty:start liberty:start-server liberty:status liberty:stop liberty:stop-server liberty:test-start-server liberty:test-stop-server liberty:undeploy liberty:uninstall-feature
|
||||
|
||||
# options
|
||||
"-Dmaven.test.skip=true" -DskipTests -DskipITs -Dmaven.surefire.debug -DenableCiProfile "-Dpmd.skip=true" "-Dcheckstyle.skip=true" "-Dtycho.mode=maven" "-Dmaven.test.failure.ignore=true" "-DgroupId=" "-DartifactId=" "-Dversion=" "-Dpackaging=jar" "-Dfile="
|
||||
@@ -319,6 +326,7 @@ function listMavenCompletions {
|
||||
-Dit.test=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dit.test=\1?' ; fi)
|
||||
|
||||
$profiles
|
||||
$modules
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +1,15 @@
|
||||
# NPX Plugin
|
||||
> npx(1) -- execute npm package binaries. ([more info](https://github.com/zkat/npx))
|
||||
|
||||
> npx(1) -- execute npm package binaries. ([more info](https://github.com/npm/npx))
|
||||
|
||||
This plugin automatically registers npx command-not-found handler if `npx` exists in your `$PATH`.
|
||||
|
||||
## Setup
|
||||
To use it, add `npx` to the plugins array in your zshrc file:
|
||||
|
||||
- Add plugin to `~/.zshrc`
|
||||
|
||||
```bash
|
||||
```zsh
|
||||
plugins=(.... npx)
|
||||
```
|
||||
|
||||
- Globally install npx binary (npx will be auto installed with recent versions of Node.js)
|
||||
```bash
|
||||
sudo npm install -g npx
|
||||
```
|
||||
|
||||
## Note
|
||||
|
||||
The shell auto-fallback doesn't auto-install plain packages. In order to get it to install something, you need to add `@`:
|
||||
@@ -29,3 +23,17 @@ Started
|
||||
|
||||
It does it this way so folks using the fallback don't accidentally try to install regular typoes.
|
||||
|
||||
## Deprecation
|
||||
|
||||
Since npm v7, `npx` has been moved to `npm exec`. With the move, [the `--shell-auto-fallback` argument
|
||||
for `npx` has been removed](https://github.com/npm/cli/blob/v7.0.0/docs/content/cli-commands/npm-exec.md#compatibility-with-older-npx-versions):
|
||||
|
||||
> Shell fallback functionality is removed, as it is not advisable.
|
||||
|
||||
When using npm v7, you'll get this error:
|
||||
|
||||
> npx: the --shell-auto-fallback argument has been removed
|
||||
|
||||
If you get this error, just disable the plugin by removing it from the plugins array in your zshrc file.
|
||||
This plugin will no longer be maintained and will be removed in the future, when the older `npx` versions
|
||||
are no longer available.
|
||||
|
||||
@@ -1,9 +1,26 @@
|
||||
# nvm plugin
|
||||
|
||||
This plugin adds autocompletions for [nvm](https://github.com/creationix/nvm) — a Node.js version manager.
|
||||
This plugin adds autocompletions for [nvm](https://github.com/nvm-sh/nvm) — a Node.js version manager.
|
||||
It also automatically sources nvm, so you don't need to do it manually in your `.zshrc`.
|
||||
|
||||
To use it, add `nvm` to the plugins array of your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... nvm)
|
||||
```
|
||||
|
||||
## Settings
|
||||
|
||||
- **`NVM_DIR`**: if you have installed nvm in a directory other than `$HOME/.nvm`, set and export `NVM_DIR`
|
||||
to be the directory where you installed nvm.
|
||||
|
||||
- **`NVM_HOMEBREW`**: if you installed nvm via Homebrew, in a directory other than `/usr/local/opt/nvm`, you
|
||||
can set `NVM_HOMEBREW` to be the directory where you installed it.
|
||||
|
||||
- **`NVM_LAZY`**: if you want the plugin to defer the load of nvm to speed-up the start of your zsh session,
|
||||
set `NVM_LAZY` to `1`. This will use the `--no-use` parameter when loading nvm, and will create a function
|
||||
for `node`, `npm` and `yarn`, so when you call either of these three, nvm will load with `nvm use default`.
|
||||
|
||||
- **`NVM_AUTOLOAD`**: if `NVM_AUTOLOAD` is set to `1`, the plugin will automatically load a node version when
|
||||
if finds a [`.nvmrc` file](https://github.com/nvm-sh/nvm#nvmrc) in the current working directory indicating
|
||||
which node version to load.
|
||||
|
||||
@@ -1,8 +1,77 @@
|
||||
# Set NVM_DIR if it isn't already defined
|
||||
[[ -z "$NVM_DIR" ]] && export NVM_DIR="$HOME/.nvm"
|
||||
|
||||
# Try to load nvm only if command not already available
|
||||
if ! type "nvm" &> /dev/null; then
|
||||
# Load nvm if it exists
|
||||
[[ -f "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
|
||||
# See https://github.com/nvm-sh/nvm#installation-and-update
|
||||
if [[ -z "$NVM_DIR" ]]; then
|
||||
if [[ -d "$HOME/.nvm" ]]; then
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
elif [[ -d "${XDG_CONFIG_HOME:-$HOME/.config}/nvm" ]]; then
|
||||
export NVM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nvm"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Don't try to load nvm if command already available
|
||||
which nvm &> /dev/null && return
|
||||
|
||||
if [[ -f "$NVM_DIR/nvm.sh" ]]; then
|
||||
# Load nvm if it exists in $NVM_DIR
|
||||
source "$NVM_DIR/nvm.sh" ${NVM_LAZY+"--no-use"}
|
||||
else
|
||||
# Otherwise try to load nvm installed via Homebrew
|
||||
# User can set this if they have an unusual Homebrew setup
|
||||
NVM_HOMEBREW="${NVM_HOMEBREW:-/usr/local/opt/nvm}"
|
||||
# Load nvm from Homebrew location if it exists
|
||||
if [[ -f "$NVM_HOMEBREW/nvm.sh" ]]; then
|
||||
source "$NVM_HOMEBREW/nvm.sh" ${NVM_LAZY+"--no-use"}
|
||||
else
|
||||
# Exit the plugin if we couldn't find nvm
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
# Call nvm when first using node, npm or yarn
|
||||
if (( $+NVM_LAZY )); then
|
||||
function node npm yarn {
|
||||
unfunction node npm yarn
|
||||
nvm use default
|
||||
command "$0" "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
# Autoload nvm when finding a .nvmrc file in the current directory
|
||||
# Adapted from: https://github.com/nvm-sh/nvm#zsh
|
||||
if (( $+NVM_AUTOLOAD )); then
|
||||
load-nvmrc() {
|
||||
local node_version="$(nvm version)"
|
||||
local nvmrc_path="$(nvm_find_nvmrc)"
|
||||
|
||||
if [[ -n "$nvmrc_path" ]]; then
|
||||
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
|
||||
|
||||
if [[ "$nvmrc_node_version" = "N/A" ]]; then
|
||||
nvm install
|
||||
elif [[ "$nvmrc_node_version" != "$node_version" ]]; then
|
||||
nvm use
|
||||
fi
|
||||
elif [[ "$node_version" != "$(nvm version default)" ]]; then
|
||||
echo "Reverting to nvm default version"
|
||||
nvm use default
|
||||
fi
|
||||
}
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd load-nvmrc
|
||||
|
||||
load-nvmrc
|
||||
fi
|
||||
|
||||
# Load nvm bash completion
|
||||
for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_completion.d/nvm"; do
|
||||
if [[ -f "$nvm_completion" ]]; then
|
||||
# Load bashcompinit
|
||||
autoload -U +X bashcompinit && bashcompinit
|
||||
# Bypass compinit call in nvm bash completion script. See:
|
||||
# https://github.com/nvm-sh/nvm/blob/4436638/bash_completion#L86-L93
|
||||
ZSH_VERSION= source "$nvm_completion"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
unset NVM_HOMEBREW NVM_LAZY NVM_AUTOLOAD nvm_completion
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
# Nyan plugin
|
||||
|
||||
This plugin adds a command to display [Nyan Cat](https://en.wikipedia.org/wiki/Nyan_Cat) right inside your terminal.
|
||||
|
||||
**Plugin is deprecated**. Check [official repo](https://github.com/klange/nyancat) for more information.
|
||||
@@ -1,10 +0,0 @@
|
||||
print -Pn '%F{yellow}'
|
||||
cat >&2 <<-EOD
|
||||
nyan plugin:
|
||||
The nyancat server used by this plugin was shut down due to increased
|
||||
bandwidth costs, so the nyan plugin no longer works. You can get the
|
||||
same functionality in some distributions by installing the nyancat package,
|
||||
or you can compile it yourself.
|
||||
See https://github.com/klange/nyancat for more information.
|
||||
EOD
|
||||
print -Pn '%f'
|
||||
@@ -22,14 +22,17 @@ Original author: [Sorin Ionescu](https://github.com/sorin-ionescu)
|
||||
| `pfs` | Return the current Finder selection |
|
||||
| `cdf` | `cd` to the current Finder directory |
|
||||
| `pushdf` | `pushd` to the current Finder directory |
|
||||
| `pxd` | Return the current Xcode project directory |
|
||||
| `cdx` | `cd` to the current Xcode project directory |
|
||||
| `quick-look` | Quick-Look a specified file |
|
||||
| `man-preview` | Open a specified man page in Preview app |
|
||||
| `showfiles` | Show hidden files |
|
||||
| `hidefiles` | Hide the hidden files |
|
||||
| `itunes` | DEPRECATED. Use `music` from macOS Catalina on |
|
||||
| `showfiles` | Show hidden files in Finder |
|
||||
| `hidefiles` | Hide the hidden files in Finder |
|
||||
| `itunes` | _DEPRECATED_. Use `music` from macOS Catalina on |
|
||||
| `music` | Control Apple Music. Use `music -h` for usage details |
|
||||
| `spotify` | Control Spotify and search by artist, album, track… |
|
||||
| `rmdsstore` | Remove .DS\_Store files recursively in a directory |
|
||||
| `btrestart` | Restart the Bluetooth daemon |
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
# Open the current directory in a Finder window
|
||||
alias ofd='open_command $PWD'
|
||||
|
||||
# Show/hide hidden files in the Finder
|
||||
alias showfiles="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
|
||||
alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
|
||||
|
||||
# Bluetooth restart
|
||||
function btrestart() {
|
||||
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
|
||||
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
|
||||
}
|
||||
|
||||
function _omz_osx_get_frontmost_app() {
|
||||
local the_app=$(
|
||||
osascript 2>/dev/null <<EOF
|
||||
tell application "System Events"
|
||||
name of first item of (every process whose frontmost is true)
|
||||
end tell
|
||||
osascript 2>/dev/null <<EOF
|
||||
tell application "System Events"
|
||||
name of first item of (every process whose frontmost is true)
|
||||
end tell
|
||||
EOF
|
||||
)
|
||||
echo "$the_app"
|
||||
}
|
||||
|
||||
function tab() {
|
||||
@@ -27,7 +34,6 @@ function tab() {
|
||||
end tell
|
||||
tell application "Terminal" to do script "${command}" in front window
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'iTerm' ]]; then
|
||||
osascript <<EOF
|
||||
tell application "iTerm"
|
||||
@@ -41,32 +47,29 @@ EOF
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'iTerm2' ]]; then
|
||||
osascript <<EOF
|
||||
tell application "iTerm2"
|
||||
tell current window
|
||||
create tab with default profile
|
||||
tell current session to write text "${command}"
|
||||
end tell
|
||||
osascript <<EOF
|
||||
tell application "iTerm2"
|
||||
tell current window
|
||||
create tab with default profile
|
||||
tell current session to write text "${command}"
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
elif [[ "$the_app" == 'Hyper' ]]; then
|
||||
osascript >/dev/null <<EOF
|
||||
tell application "System Events"
|
||||
tell process "Hyper" to keystroke "t" using command down
|
||||
end tell
|
||||
delay 1
|
||||
tell application "System Events"
|
||||
keystroke "${command}"
|
||||
key code 36 #(presses enter)
|
||||
end tell
|
||||
tell application "System Events"
|
||||
tell process "Hyper" to keystroke "t" using command down
|
||||
end tell
|
||||
delay 1
|
||||
tell application "System Events"
|
||||
keystroke "${command}"
|
||||
key code 36 #(presses enter)
|
||||
end tell
|
||||
EOF
|
||||
|
||||
else
|
||||
echo "tab: unsupported terminal app: $the_app"
|
||||
false
|
||||
|
||||
echo "$0: unsupported terminal app: $the_app" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -79,7 +82,6 @@ function vsplit_tab() {
|
||||
if [[ "$the_app" == 'iTerm' ]]; then
|
||||
osascript <<EOF
|
||||
-- tell application "iTerm" to activate
|
||||
|
||||
tell application "System Events"
|
||||
tell process "iTerm"
|
||||
tell menu item "Split Vertically With Current Profile" of menu "Shell" of menu bar item "Shell" of menu bar 1
|
||||
@@ -89,37 +91,33 @@ function vsplit_tab() {
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'iTerm2' ]]; then
|
||||
osascript <<EOF
|
||||
tell application "iTerm2"
|
||||
tell current session of first window
|
||||
set newSession to (split vertically with same profile)
|
||||
tell newSession
|
||||
write text "${command}"
|
||||
select
|
||||
end tell
|
||||
osascript <<EOF
|
||||
tell application "iTerm2"
|
||||
tell current session of first window
|
||||
set newSession to (split vertically with same profile)
|
||||
tell newSession
|
||||
write text "${command}"
|
||||
select
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'Hyper' ]]; then
|
||||
osascript >/dev/null <<EOF
|
||||
tell application "System Events"
|
||||
tell process "Hyper"
|
||||
tell menu item "Split Vertically" of menu "Shell" of menu bar 1
|
||||
click
|
||||
end tell
|
||||
end tell
|
||||
delay 1
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'Hyper' ]]; then
|
||||
osascript >/dev/null <<EOF
|
||||
tell application "System Events"
|
||||
tell process "Hyper"
|
||||
tell menu item "Split Vertically" of menu "Shell" of menu bar 1
|
||||
click
|
||||
end tell
|
||||
end tell
|
||||
delay 1
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
else
|
||||
echo "$0: unsupported terminal app: $the_app" >&2
|
||||
false
|
||||
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -142,44 +140,40 @@ function split_tab() {
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'iTerm2' ]]; then
|
||||
osascript <<EOF
|
||||
tell application "iTerm2"
|
||||
tell current session of first window
|
||||
set newSession to (split horizontally with same profile)
|
||||
tell newSession
|
||||
write text "${command}"
|
||||
select
|
||||
end tell
|
||||
osascript <<EOF
|
||||
tell application "iTerm2"
|
||||
tell current session of first window
|
||||
set newSession to (split horizontally with same profile)
|
||||
tell newSession
|
||||
write text "${command}"
|
||||
select
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'Hyper' ]]; then
|
||||
osascript >/dev/null <<EOF
|
||||
tell application "System Events"
|
||||
tell process "Hyper"
|
||||
tell menu item "Split Horizontally" of menu "Shell" of menu bar 1
|
||||
click
|
||||
end tell
|
||||
end tell
|
||||
delay 1
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
|
||||
elif [[ "$the_app" == 'Hyper' ]]; then
|
||||
osascript >/dev/null <<EOF
|
||||
tell application "System Events"
|
||||
tell process "Hyper"
|
||||
tell menu item "Split Horizontally" of menu "Shell" of menu bar 1
|
||||
click
|
||||
end tell
|
||||
end tell
|
||||
delay 1
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
else
|
||||
echo "$0: unsupported terminal app: $the_app" >&2
|
||||
false
|
||||
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function pfd() {
|
||||
osascript 2>/dev/null <<EOF
|
||||
tell application "Finder"
|
||||
return POSIX path of (target of window 1 as alias)
|
||||
return POSIX path of (insertion location as alias)
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
@@ -205,6 +199,21 @@ function pushdf() {
|
||||
pushd "$(pfd)"
|
||||
}
|
||||
|
||||
function pxd() {
|
||||
dirname $(osascript 2>/dev/null <<EOF
|
||||
if application "Xcode" is running then
|
||||
tell application "Xcode"
|
||||
return path of active workspace document
|
||||
end tell
|
||||
end if
|
||||
EOF
|
||||
)
|
||||
}
|
||||
|
||||
function cdx() {
|
||||
cd "$(pxd)"
|
||||
}
|
||||
|
||||
function quick-look() {
|
||||
(( $# > 0 )) && qlmanage -p $* &>/dev/null &
|
||||
}
|
||||
@@ -218,133 +227,13 @@ function vncviewer() {
|
||||
open vnc://$@
|
||||
}
|
||||
|
||||
# iTunes control function
|
||||
function itunes music() {
|
||||
local APP_NAME=Music
|
||||
|
||||
autoload is-at-least
|
||||
if is-at-least 10.15 $(sw_vers -productVersion); then
|
||||
if [[ $0 = itunes ]]; then
|
||||
echo >&2 The itunes function name is deprecated. Use \`music\' instead.
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
APP_NAME=iTunes
|
||||
fi
|
||||
|
||||
local opt=$1
|
||||
local playlist=$2
|
||||
shift
|
||||
case "$opt" in
|
||||
launch|play|pause|stop|rewind|resume|quit)
|
||||
;;
|
||||
mute)
|
||||
opt="set mute to true"
|
||||
;;
|
||||
unmute)
|
||||
opt="set mute to false"
|
||||
;;
|
||||
next|previous)
|
||||
opt="$opt track"
|
||||
;;
|
||||
vol)
|
||||
local new_volume volume=$(osascript -e "tell application \"$APP_NAME\" to get sound volume")
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo "Current volume is ${volume}."
|
||||
return 0
|
||||
fi
|
||||
case $1 in
|
||||
up) new_volume=$((volume + 10 < 100 ? volume + 10 : 100)) ;;
|
||||
down) new_volume=$((volume - 10 > 0 ? volume - 10 : 0)) ;;
|
||||
<0-100>) new_volume=$1 ;;
|
||||
*) echo "'$1' is not valid. Expected <0-100>, up or down."
|
||||
return 1 ;;
|
||||
esac
|
||||
opt="set sound volume to ${new_volume}"
|
||||
;;
|
||||
playlist)
|
||||
# Inspired by: https://gist.github.com/nakajijapan/ac8b45371064ae98ea7f
|
||||
if [[ ! -z "$playlist" ]]; then
|
||||
osascript -e "tell application \"$APP_NAME\"" -e "set new_playlist to \"$playlist\" as string" -e "play playlist new_playlist" -e "end tell" 2>/dev/null;
|
||||
if [[ $? -eq 0 ]]; then
|
||||
opt="play"
|
||||
else
|
||||
opt="stop"
|
||||
fi
|
||||
else
|
||||
opt="set allPlaylists to (get name of every playlist)"
|
||||
fi
|
||||
;;
|
||||
playing|status)
|
||||
local state=`osascript -e "tell application \"$APP_NAME\" to player state as string"`
|
||||
if [[ "$state" = "playing" ]]; then
|
||||
currenttrack=`osascript -e "tell application \"$APP_NAME\" to name of current track as string"`
|
||||
currentartist=`osascript -e "tell application \"$APP_NAME\" to artist of current track as string"`
|
||||
echo -E "Listening to $fg[yellow]$currenttrack$reset_color by $fg[yellow]$currentartist$reset_color";
|
||||
else
|
||||
echo "$APP_NAME is" $state;
|
||||
fi
|
||||
return 0
|
||||
;;
|
||||
shuf|shuff|shuffle)
|
||||
# The shuffle property of current playlist can't be changed in iTunes 12,
|
||||
# so this workaround uses AppleScript to simulate user input instead.
|
||||
# Defaults to toggling when no options are given.
|
||||
# The toggle option depends on the shuffle button being visible in the Now playing area.
|
||||
# On and off use the menu bar items.
|
||||
local state=$1
|
||||
|
||||
if [[ -n "$state" && ! "$state" =~ "^(on|off|toggle)$" ]]
|
||||
then
|
||||
print "Usage: $0 shuffle [on|off|toggle]. Invalid option."
|
||||
return 1
|
||||
fi
|
||||
|
||||
case "$state" in
|
||||
on|off)
|
||||
# Inspired by: https://stackoverflow.com/a/14675583
|
||||
osascript 1>/dev/null 2>&1 <<-EOF
|
||||
tell application "System Events" to perform action "AXPress" of (menu item "${state}" of menu "Shuffle" of menu item "Shuffle" of menu "Controls" of menu bar item "Controls" of menu bar 1 of application process "iTunes" )
|
||||
EOF
|
||||
return 0
|
||||
;;
|
||||
toggle|*)
|
||||
osascript 1>/dev/null 2>&1 <<-EOF
|
||||
tell application "System Events" to perform action "AXPress" of (button 2 of process "iTunes"'s window "iTunes"'s scroll area 1)
|
||||
EOF
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
""|-h|--help)
|
||||
echo "Usage: $0 <option>"
|
||||
echo "option:"
|
||||
echo "\tlaunch|play|pause|stop|rewind|resume|quit"
|
||||
echo "\tmute|unmute\tcontrol volume set"
|
||||
echo "\tnext|previous\tplay next or previous track"
|
||||
echo "\tshuf|shuffle [on|off|toggle]\tSet shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer."
|
||||
echo "\tvol [0-100|up|down]\tGet or set the volume. 0 to 100 sets the volume. 'up' / 'down' increases / decreases by 10 points. No argument displays current volume."
|
||||
echo "\tplaying|status\tShow what song is currently playing in Music."
|
||||
echo "\tplaylist [playlist name]\t Play specific playlist"
|
||||
echo "\thelp\tshow this message and exit"
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
print "Unknown option: $opt"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
osascript -e "tell application \"$APP_NAME\" to $opt"
|
||||
}
|
||||
|
||||
# Spotify control function
|
||||
source ${ZSH}/plugins/osx/spotify
|
||||
|
||||
# Show/hide hidden files in the Finder
|
||||
alias showfiles="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
|
||||
alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
|
||||
|
||||
# Remove .DS_Store files recursively in a directory, default .
|
||||
function rmdsstore() {
|
||||
find "${@:-.}" -type f -name .DS_Store -delete
|
||||
find "${@:-.}" -type f -name .DS_Store -delete
|
||||
}
|
||||
|
||||
# Music / iTunes control function
|
||||
source "${0:h:A}/music"
|
||||
|
||||
# Spotify control function
|
||||
source "${0:h:A}/spotify"
|
||||
|
||||
@@ -9,7 +9,11 @@
|
||||
# If you would like to clear your cache, go ahead and do a
|
||||
# "zsh-pip-clear-cache".
|
||||
|
||||
ZSH_PIP_CACHE_FILE=~/.pip/zsh-cache
|
||||
if [[ -d "${XDG_CACHE_HOME:-$HOME/.cache}/pip" ]]; then
|
||||
ZSH_PIP_CACHE_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/pip/zsh-cache"
|
||||
else
|
||||
ZSH_PIP_CACHE_FILE=~/.pip/zsh-cache
|
||||
fi
|
||||
ZSH_PIP_INDEXES=(https://pypi.org/simple/)
|
||||
|
||||
zsh-pip-clear-cache() {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# Pipenv completion
|
||||
_pipenv() {
|
||||
eval $(env COMMANDLINE="${words[1,$CURRENT]}" _PIPENV_COMPLETE=complete-zsh pipenv)
|
||||
eval $(env COMMANDLINE="${words[1,$CURRENT]}" _PIPENV_COMPLETE=complete-zsh pipenv)
|
||||
}
|
||||
compdef _pipenv pipenv
|
||||
|
||||
# Automatic pipenv shell activation/deactivation
|
||||
_togglePipenvShell() {
|
||||
# deactivate shell if Pipfile doesn't exist and not in a subdir
|
||||
if [[ ! -a "$PWD/Pipfile" ]]; then
|
||||
if [[ ! -f "$PWD/Pipfile" ]]; then
|
||||
if [[ "$PIPENV_ACTIVE" == 1 ]]; then
|
||||
if [[ "$PWD" != "$pipfile_dir"* ]]; then
|
||||
exit
|
||||
@@ -17,7 +17,7 @@ _togglePipenvShell() {
|
||||
|
||||
# activate the shell if Pipfile exists
|
||||
if [[ "$PIPENV_ACTIVE" != 1 ]]; then
|
||||
if [[ -a "$PWD/Pipfile" ]]; then
|
||||
if [[ -f "$PWD/Pipfile" ]]; then
|
||||
export pipfile_dir="$PWD"
|
||||
pipenv shell
|
||||
fi
|
||||
@@ -25,6 +25,7 @@ _togglePipenvShell() {
|
||||
}
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook chpwd _togglePipenvShell
|
||||
_togglePipenvShell
|
||||
|
||||
# Aliases
|
||||
alias pch="pipenv check"
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
# the 'pyenv_prompt_info' function. Also loads pyenv-virtualenv if available.
|
||||
|
||||
# Load pyenv only if command not already available
|
||||
command -v pyenv &> /dev/null && FOUND_PYENV=1 || FOUND_PYENV=0
|
||||
if command -v pyenv &> /dev/null && [[ "$(uname -r)" != *icrosoft* ]]; then
|
||||
FOUND_PYENV=1
|
||||
else
|
||||
FOUND_PYENV=0
|
||||
fi
|
||||
|
||||
if [[ $FOUND_PYENV -ne 1 ]]; then
|
||||
pyenvdirs=("$HOME/.pyenv" "/usr/local/pyenv" "/opt/pyenv" "/usr/local/opt/pyenv")
|
||||
@@ -25,7 +29,7 @@ if [[ $FOUND_PYENV -ne 1 ]]; then
|
||||
fi
|
||||
|
||||
if [[ $FOUND_PYENV -eq 1 ]]; then
|
||||
eval "$(pyenv init - zsh)"
|
||||
eval "$(pyenv init - --no-rehash zsh)"
|
||||
if (( $+commands[pyenv-virtualenv-init] )); then
|
||||
eval "$(pyenv virtualenv-init - zsh)"
|
||||
fi
|
||||
|
||||
@@ -41,7 +41,7 @@ function pyuserpaths() {
|
||||
}
|
||||
|
||||
# Grep among .py files
|
||||
alias pygrep='grep -r --include="*.py"'
|
||||
alias pygrep='grep -nr --include="*.py"'
|
||||
|
||||
# Run proper IPython regarding current virtualenv (if any)
|
||||
alias ipython="python -c 'import IPython; IPython.terminal.ipapp.launch_new_instance()'"
|
||||
|
||||
@@ -34,7 +34,7 @@ if [[ $FOUND_RBENV -eq 1 ]]; then
|
||||
}
|
||||
|
||||
function current_gemset() {
|
||||
echo "$(rbenv gemset active 2&>/dev/null | sed -e ":a" -e '$ s/\n/+/gp;N;b a' | head -n1)"
|
||||
echo "$(rbenv gemset active 2>/dev/null)" | tr ' ' '+'
|
||||
}
|
||||
|
||||
function gems() {
|
||||
|
||||
@@ -1,54 +1,100 @@
|
||||
# A good summary of the zsh 5.1 Bracketed Paste Mode changes is at:
|
||||
# https://archive.zhimingwang.org/blog/2015-09-21-zsh-51-and-bracketed-paste.html
|
||||
|
||||
# zsh 5.1 (September 2015) introduced built-in support for Bracketed Paste Mode
|
||||
# https://github.com/zsh-users/zsh/blob/68405f31a043bdd5bf338eb06688ed3e1f740937/README#L38-L45
|
||||
#
|
||||
# zsh 5.1 breaks url-quote-magic and other widgets replacing self-insert
|
||||
# zsh-users' bracketed-paste-magic resolves these issues:
|
||||
# https://github.com/zsh-users/zsh/blob/f702e17b14d75aa21bff014168fa9048124db286/Functions/Zle/bracketed-paste-magic#L9-L12
|
||||
|
||||
# Load bracketed-paste-magic if zsh version is >= 5.1
|
||||
if [[ ${ZSH_VERSION:0:3} -ge 5.1 ]]; then
|
||||
set zle_bracketed_paste # Explicitly restore this zsh default
|
||||
autoload -Uz bracketed-paste-magic
|
||||
zle -N bracketed-paste bracketed-paste-magic
|
||||
return ### The rest of this file is NOT executed on zsh version >= 5.1 ###
|
||||
fi
|
||||
|
||||
######################################################################
|
||||
# The rest of this file is ONLY executed if zsh version < 5.1
|
||||
######################################################################
|
||||
|
||||
# Code from Mikael Magnusson: https://www.zsh.org/mla/users/2011/msg00367.html
|
||||
#
|
||||
# Requires xterm, urxvt, iTerm2 or any other terminal that supports bracketed
|
||||
# paste mode as documented: https://www.xfree86.org/current/ctlseqs.html
|
||||
# Requires xterm, urxvt, iTerm2 or any other terminal that supports
|
||||
# Bracketed Paste Mode as documented:
|
||||
# https://www.xfree86.org/current/ctlseqs.html#Bracketed%20Paste%20Mode
|
||||
#
|
||||
# For tmux, use: bind ] paste-buffer -p
|
||||
#
|
||||
# Additional technical details: https://cirw.in/blog/bracketed-paste
|
||||
|
||||
# create a new keymap to use while pasting
|
||||
bindkey -N paste
|
||||
# make everything in this keymap call our custom widget
|
||||
bindkey -R -M paste "^@"-"\M-^?" paste-insert
|
||||
# these are the codes sent around the pasted text in bracketed
|
||||
# paste mode.
|
||||
# do the first one with both -M viins and -M vicmd in vi mode
|
||||
bindkey '^[[200~' _start_paste
|
||||
bindkey -M paste '^[[201~' _end_paste
|
||||
# insert newlines rather than carriage returns when pasting newlines
|
||||
bindkey -M paste -s '^M' '^J'
|
||||
# Create a new keymap to use while pasting
|
||||
bindkey -N bracketed-paste
|
||||
# Make everything in this new keymap enqueue characters for pasting
|
||||
bindkey -RM bracketed-paste '\x00-\xFF' bracketed-paste-enqueue
|
||||
# These are the codes sent around the pasted text in bracketed paste mode
|
||||
bindkey -M main '^[[200~' _bracketed_paste_begin
|
||||
bindkey -M bracketed-paste '^[[201~' _bracketed_paste_end
|
||||
# Insert newlines rather than carriage returns when pasting newlines
|
||||
bindkey -M bracketed-paste -s '^M' '^J'
|
||||
|
||||
zle -N _start_paste
|
||||
zle -N _end_paste
|
||||
zle -N zle-line-init _zle_line_init
|
||||
zle -N zle-line-finish _zle_line_finish
|
||||
zle -N paste-insert _paste_insert
|
||||
zle -N _bracketed_paste_begin
|
||||
zle -N _bracketed_paste_end
|
||||
zle -N bracketed-paste-enqueue _bracketed_paste_enqueue
|
||||
|
||||
# switch the active keymap to paste mode
|
||||
function _start_paste() {
|
||||
bindkey -A paste main
|
||||
# Attempt to not clobber zle_line_{init,finish}
|
||||
# Use https://github.com/willghatch/zsh-hooks if available
|
||||
if typeset -f hooks-add-hook > /dev/null; then
|
||||
hooks-add-hook zle_line_init_hook _bracketed_paste_zle_init
|
||||
hooks-add-hook zle_line_finish_hook _bracketed_paste_zle_finish
|
||||
else
|
||||
zle -N zle-line-init _bracketed_paste_zle_init
|
||||
zle -N zle-line-finish _bracketed_paste_zle_finish
|
||||
fi
|
||||
|
||||
# Switch the active keymap to paste mode
|
||||
_bracketed_paste_begin() {
|
||||
# Save the bindkey command to restore the active ("main") keymap
|
||||
# Tokenise the restorative bindkey command into an array
|
||||
_bracketed_paste_restore_keymap=( ${(z)"$(bindkey -lL main)"} )
|
||||
bindkey -A bracketed-paste main
|
||||
}
|
||||
|
||||
# go back to our normal keymap, and insert all the pasted text in the
|
||||
# command line. this has the nice effect of making the whole paste be
|
||||
# Go back to our normal keymap, and insert all the pasted text in the
|
||||
# command line. This has the nice effect of making the whole paste be
|
||||
# a single undo/redo event.
|
||||
function _end_paste() {
|
||||
#use bindkey -v here with vi mode probably. maybe you want to track
|
||||
#if you were in ins or cmd mode and restore the right one.
|
||||
bindkey -e
|
||||
LBUFFER+=$_paste_content
|
||||
unset _paste_content
|
||||
_bracketed_paste_end() {
|
||||
# Only execute the restore command if it starts with 'bindkey'
|
||||
# Allow for option KSH_ARRAYS being set (indexing starts at 0)
|
||||
if [ ${_bracketed_paste_restore_keymap[@]:0:1} = 'bindkey' ]; then
|
||||
$_bracketed_paste_restore_keymap
|
||||
fi
|
||||
LBUFFER+=$_bracketed_paste_content
|
||||
unset _bracketed_paste_content _bracketed_paste_restore_keymap
|
||||
}
|
||||
|
||||
function _paste_insert() {
|
||||
_paste_content+=$KEYS
|
||||
# Append a pasted character to the content which is later inserted as a whole
|
||||
_bracketed_paste_enqueue() {
|
||||
_bracketed_paste_content+=$KEYS
|
||||
}
|
||||
|
||||
function _zle_line_init() {
|
||||
# Tell terminal to send escape codes around pastes.
|
||||
[[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004h'
|
||||
# Run at zle-line-init
|
||||
_bracketed_paste_zle_init() {
|
||||
_bracketed_paste_content=''
|
||||
# Tell terminal to send escape codes around pastes
|
||||
if [[ $TERM =~ '^(rxvt-unicode|xterm(-256color)?|screen(-256color)?)$' ]]; then
|
||||
printf '\e[?2004h'
|
||||
fi
|
||||
}
|
||||
|
||||
function _zle_line_finish() {
|
||||
# Tell it to stop when we leave zle, so pasting in other programs
|
||||
# doesn't get the ^[[200~ codes around the pasted text.
|
||||
[[ $TERM == rxvt-unicode || $TERM == xterm || $TERM = xterm-256color || $TERM = screen || $TERM = screen-256color ]] && printf '\e[?2004l'
|
||||
# Run at zle-line-finish
|
||||
_bracketed_paste_zle_finish() {
|
||||
# Turn off bracketed paste when we leave ZLE, so pasting in other programs
|
||||
# doesn't get the ^[[200~ codes around the pasted text
|
||||
if [[ $TERM =~ '^(rxvt-unicode|xterm(-256color)?|screen(-256color)?)$' ]]; then
|
||||
printf '\e[?2004l'
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,9 @@ directory aliases, which appear as named directories in zsh session.
|
||||
## INSTALLATION NOTES
|
||||
|
||||
Besides oh-my-zsh, `scd` can be used with *bash*, *dash* or *tcsh*
|
||||
shells and is also available as [Vim](https://www.vim.org/) plugin and
|
||||
[IPython](https://ipython.org/) extension. For installation details, see
|
||||
shells and is also available as Vim plugin
|
||||
[scd.vim](https://github.com/pavoljuhas/scd.vim) and
|
||||
[IPython](https://ipython.org) extension. For installation details, see
|
||||
https://github.com/pavoljuhas/smart-change-directory.
|
||||
|
||||
## SYNOPSIS
|
||||
@@ -24,11 +25,31 @@ https://github.com/pavoljuhas/smart-change-directory.
|
||||
scd [options] [pattern1 pattern2 ...]
|
||||
```
|
||||
|
||||
## PATTERNS
|
||||
|
||||
Patterns may use all zsh [glob operators](
|
||||
http://zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators)
|
||||
available with *extendedglob* option. Specified patterns must match
|
||||
the absolute path and at least one of them must match in the tail.
|
||||
Several special patterns are also recognized as follows:
|
||||
|
||||
<dl><dt>
|
||||
^PAT</dt><dd>
|
||||
PAT must match at the beginning of the path, for example, "^/home"</dd><dt>
|
||||
PAT$</dt><dd>
|
||||
require PAT to match the end of the path, "man$"</dd><dt>
|
||||
./</dt><dd>
|
||||
match only subdirectories of the current directory</dd><dt>
|
||||
:PAT</dt><dd>
|
||||
require PAT to match over the tail component, ":doc", ":re/doc"</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
## OPTIONS
|
||||
|
||||
<dl><dt>
|
||||
-a, --add</dt><dd>
|
||||
add specified directories to the directory index.</dd><dt>
|
||||
add current or specified directories to the directory index.</dd><dt>
|
||||
|
||||
--unindex</dt><dd>
|
||||
remove current or specified directories from the index.</dd><dt>
|
||||
@@ -42,11 +63,16 @@ scd [options] [pattern1 pattern2 ...]
|
||||
|
||||
--unalias</dt><dd>
|
||||
remove ALIAS definition for the current or specified directory from
|
||||
<em>~/.scdalias.zsh</em>.</dd><dt>
|
||||
<em>~/.scdalias.zsh</em>. Use "OLD" to purge aliases to non-existent
|
||||
directories.</dd><dt>
|
||||
|
||||
-A, --all</dt><dd>
|
||||
include all matching directories. Disregard matching by directory
|
||||
alias and filtering of less likely paths.</dd><dt>
|
||||
display all directories even those excluded by patterns in
|
||||
<em>~/.scdignore</em>. Disregard the unique matching for a
|
||||
directory alias and filtering of less likely paths.</dd><dt>
|
||||
|
||||
-p, --push</dt><dd>
|
||||
use "pushd" to change to the target directory.</dd><dt>
|
||||
|
||||
--list</dt><dd>
|
||||
show matching directories and exit.</dd><dt>
|
||||
@@ -58,6 +84,7 @@ scd [options] [pattern1 pattern2 ...]
|
||||
display this options summary and exit.</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
```sh
|
||||
@@ -83,17 +110,26 @@ scd --alias=xray
|
||||
scd xray
|
||||
```
|
||||
|
||||
# FILES
|
||||
## FILES
|
||||
|
||||
<dl><dt>
|
||||
~/.scdhistory</dt><dd>
|
||||
time-stamped index of visited directories.</dd><dt>
|
||||
|
||||
~/.scdalias.zsh</dt><dd>
|
||||
scd-generated definitions of directory aliases.</dd>
|
||||
scd-generated definitions of directory aliases.</dd><dt>
|
||||
|
||||
~/.scdignore</dt><dd>
|
||||
<a href="http://zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators">
|
||||
glob patterns</a> for paths to be ignored in the scd search, for example,
|
||||
<code>/mnt/backup/*</code>. The patterns are specified one per line
|
||||
and are matched assuming the <em>extendedglob</em> zsh option. Lines
|
||||
starting with "#" are skipped as comments. The .scdignore patterns
|
||||
are not applied in the <em>--all</em> mode.</dd>
|
||||
</dl>
|
||||
|
||||
# ENVIRONMENT
|
||||
|
||||
## ENVIRONMENT
|
||||
|
||||
<dl><dt>
|
||||
SCD_HISTFILE</dt><dd>
|
||||
|
||||
@@ -1,390 +0,0 @@
|
||||
#!/bin/zsh -f
|
||||
|
||||
emulate -L zsh
|
||||
local EXIT=return
|
||||
if [[ $(whence -w $0) == *:' 'command ]]; then
|
||||
emulate -R zsh
|
||||
local RUNNING_AS_COMMAND=1
|
||||
EXIT=exit
|
||||
fi
|
||||
|
||||
local DOC='scd -- smart change to a recently used directory
|
||||
usage: scd [options] [pattern1 pattern2 ...]
|
||||
Go to a directory path that contains all fixed string patterns. Prefer
|
||||
recent or frequently visited directories as found in the directory index.
|
||||
Display a selection menu in case of multiple matches.
|
||||
|
||||
Options:
|
||||
-a, --add add specified directories to the directory index.
|
||||
--unindex remove current or specified directories from the index.
|
||||
-r, --recursive apply options --add or --unindex recursively.
|
||||
--alias=ALIAS create alias for the current or specified directory and
|
||||
store it in ~/.scdalias.zsh.
|
||||
--unalias remove ALIAS definition for the current or specified
|
||||
directory from ~/.scdalias.zsh.
|
||||
-A, --all include all matching directories. Disregard matching by
|
||||
directory alias and filtering of less likely paths.
|
||||
--list show matching directories and exit.
|
||||
-v, --verbose display directory rank in the selection menu.
|
||||
-h, --help display this message and exit.
|
||||
'
|
||||
|
||||
local SCD_HISTFILE=${SCD_HISTFILE:-${HOME}/.scdhistory}
|
||||
local SCD_HISTSIZE=${SCD_HISTSIZE:-5000}
|
||||
local SCD_MENUSIZE=${SCD_MENUSIZE:-20}
|
||||
local SCD_MEANLIFE=${SCD_MEANLIFE:-86400}
|
||||
local SCD_THRESHOLD=${SCD_THRESHOLD:-0.005}
|
||||
local SCD_SCRIPT=${RUNNING_AS_COMMAND:+$SCD_SCRIPT}
|
||||
local SCD_ALIAS=~/.scdalias.zsh
|
||||
|
||||
local ICASE a d m p i maxrank threshold
|
||||
local opt_help opt_add opt_unindex opt_recursive opt_verbose
|
||||
local opt_alias opt_unalias opt_all opt_list
|
||||
local -A drank dalias
|
||||
local dmatching
|
||||
local last_directory
|
||||
|
||||
setopt extendedhistory extendedglob noautonamedirs brace_ccl
|
||||
|
||||
# If SCD_SCRIPT is defined make sure the file exists and is empty.
|
||||
# This removes any previous old commands.
|
||||
[[ -n "$SCD_SCRIPT" ]] && [[ -s $SCD_SCRIPT || ! -f $SCD_SCRIPT ]] && (
|
||||
umask 077
|
||||
: >| $SCD_SCRIPT
|
||||
)
|
||||
|
||||
# process command line options
|
||||
zmodload -i zsh/zutil
|
||||
zmodload -i zsh/datetime
|
||||
zparseopts -D -- a=opt_add -add=opt_add -unindex=opt_unindex \
|
||||
r=opt_recursive -recursive=opt_recursive \
|
||||
-alias:=opt_alias -unalias=opt_unalias \
|
||||
A=opt_all -all=opt_all -list=opt_list \
|
||||
v=opt_verbose -verbose=opt_verbose h=opt_help -help=opt_help \
|
||||
|| $EXIT $?
|
||||
|
||||
if [[ -n $opt_help ]]; then
|
||||
print $DOC
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
# load directory aliases if they exist
|
||||
[[ -r $SCD_ALIAS ]] && source $SCD_ALIAS
|
||||
|
||||
# Private internal functions are prefixed with _scd_Y19oug_.
|
||||
# Clean them up when the scd function returns.
|
||||
setopt localtraps
|
||||
trap 'unfunction -m "_scd_Y19oug_*"' EXIT
|
||||
|
||||
# works faster than the (:a) modifier and is compatible with zsh 4.2.6
|
||||
_scd_Y19oug_abspath() {
|
||||
set -A $1 ${(ps:\0:)"$(
|
||||
unfunction -m "*"; shift
|
||||
for d; do
|
||||
cd $d && print -Nr -- $PWD && cd $OLDPWD
|
||||
done
|
||||
)"}
|
||||
}
|
||||
|
||||
# define directory alias
|
||||
if [[ -n $opt_alias ]]; then
|
||||
if [[ -n $1 && ! -d $1 ]]; then
|
||||
print -u2 "'$1' is not a directory."
|
||||
$EXIT 1
|
||||
fi
|
||||
a=${opt_alias[-1]#=}
|
||||
_scd_Y19oug_abspath d ${1:-$PWD}
|
||||
# alias in the current shell, update alias file if successful
|
||||
hash -d -- $a=$d &&
|
||||
(
|
||||
umask 077
|
||||
hash -dr
|
||||
[[ -r $SCD_ALIAS ]] && source $SCD_ALIAS
|
||||
hash -d -- $a=$d
|
||||
hash -dL >| $SCD_ALIAS
|
||||
)
|
||||
$EXIT $?
|
||||
fi
|
||||
|
||||
# undefine directory alias
|
||||
if [[ -n $opt_unalias ]]; then
|
||||
if [[ -n $1 && ! -d $1 ]]; then
|
||||
print -u2 "'$1' is not a directory."
|
||||
$EXIT 1
|
||||
fi
|
||||
_scd_Y19oug_abspath a ${1:-$PWD}
|
||||
a=$(print -rD ${a})
|
||||
if [[ $a != [~][^/]## ]]; then
|
||||
$EXIT
|
||||
fi
|
||||
a=${a#[~]}
|
||||
# unalias in the current shell, update alias file if successful
|
||||
if unhash -d -- $a 2>/dev/null && [[ -r $SCD_ALIAS ]]; then
|
||||
(
|
||||
umask 077
|
||||
hash -dr
|
||||
source $SCD_ALIAS
|
||||
unhash -d -- $a 2>/dev/null &&
|
||||
hash -dL >| $SCD_ALIAS
|
||||
)
|
||||
fi
|
||||
$EXIT $?
|
||||
fi
|
||||
|
||||
# The "compress" function collapses repeated directories to
|
||||
# one entry with a time stamp that gives equivalent-probability.
|
||||
_scd_Y19oug_compress() {
|
||||
awk -v epochseconds=$EPOCHSECONDS -v meanlife=$SCD_MEANLIFE '
|
||||
BEGIN { FS = "[:;]"; }
|
||||
length($0) < 4096 && $2 > 0 {
|
||||
tau = 1.0 * ($2 - epochseconds) / meanlife;
|
||||
if (tau < -6.9078) tau = -6.9078;
|
||||
prob = exp(tau);
|
||||
sub(/^[^;]*;/, "");
|
||||
if (NF) {
|
||||
dlist[last[$0]] = "";
|
||||
dlist[NR] = $0;
|
||||
last[$0] = NR;
|
||||
ptot[$0] += prob;
|
||||
}
|
||||
}
|
||||
END {
|
||||
for (i = 1; i <= NR; ++i) {
|
||||
d = dlist[i];
|
||||
if (d) {
|
||||
ts = log(ptot[d]) * meanlife + epochseconds;
|
||||
printf(": %.0f:0;%s\n", ts, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
' $*
|
||||
}
|
||||
|
||||
# Rewrite directory index if it is at least 20% oversized
|
||||
if [[ -s $SCD_HISTFILE ]] && \
|
||||
(( $(wc -l <$SCD_HISTFILE) > 1.2 * $SCD_HISTSIZE )); then
|
||||
# compress repeated entries
|
||||
m=( ${(f)"$(_scd_Y19oug_compress $SCD_HISTFILE)"} )
|
||||
# purge non-existent directories
|
||||
m=( ${(f)"$(
|
||||
for a in $m; do
|
||||
if [[ -d ${a#*;} ]]; then print -r -- $a; fi
|
||||
done
|
||||
)"}
|
||||
)
|
||||
# cut old entries if still oversized
|
||||
if [[ $#m -gt $SCD_HISTSIZE ]]; then
|
||||
m=( ${m[-$SCD_HISTSIZE,-1]} )
|
||||
fi
|
||||
print -lr -- $m >| ${SCD_HISTFILE}
|
||||
fi
|
||||
|
||||
# Determine the last recorded directory
|
||||
if [[ -s ${SCD_HISTFILE} ]]; then
|
||||
last_directory=${"$(tail -1 ${SCD_HISTFILE})"#*;}
|
||||
fi
|
||||
|
||||
# The "record" function adds its arguments to the directory index.
|
||||
_scd_Y19oug_record() {
|
||||
while [[ -n $last_directory && $1 == $last_directory ]]; do
|
||||
shift
|
||||
done
|
||||
if [[ $# -gt 0 ]]; then
|
||||
( umask 077
|
||||
p=": ${EPOCHSECONDS}:0;"
|
||||
print -lr -- ${p}${^*} >>| $SCD_HISTFILE )
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ -n $opt_add ]]; then
|
||||
for d; do
|
||||
if [[ ! -d $d ]]; then
|
||||
print -u2 "Directory '$d' does not exist."
|
||||
$EXIT 2
|
||||
fi
|
||||
done
|
||||
_scd_Y19oug_abspath m ${*:-$PWD}
|
||||
_scd_Y19oug_record $m
|
||||
if [[ -n $opt_recursive ]]; then
|
||||
for d in $m; do
|
||||
print -n "scanning ${d} ... "
|
||||
_scd_Y19oug_record ${d}/**/*(-/N)
|
||||
print "[done]"
|
||||
done
|
||||
fi
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
# take care of removing entries from the directory index
|
||||
if [[ -n $opt_unindex ]]; then
|
||||
if [[ ! -s $SCD_HISTFILE ]]; then
|
||||
$EXIT
|
||||
fi
|
||||
# expand existing directories in the argument list
|
||||
for i in {1..$#}; do
|
||||
if [[ -d ${argv[i]} ]]; then
|
||||
_scd_Y19oug_abspath d ${argv[i]}
|
||||
argv[i]=${d}
|
||||
fi
|
||||
done
|
||||
m="$(awk -v recursive=${opt_recursive} '
|
||||
BEGIN {
|
||||
for (i = 2; i < ARGC; ++i) {
|
||||
argset[ARGV[i]] = 1;
|
||||
delete ARGV[i];
|
||||
}
|
||||
}
|
||||
1 {
|
||||
d = $0; sub(/^[^;]*;/, "", d);
|
||||
if (d in argset) next;
|
||||
}
|
||||
recursive {
|
||||
for (a in argset) {
|
||||
if (substr(d, 1, length(a) + 1) == a"/") next;
|
||||
}
|
||||
}
|
||||
{ print $0 }
|
||||
' $SCD_HISTFILE ${*:-$PWD} )" || $EXIT $?
|
||||
: >| ${SCD_HISTFILE}
|
||||
[[ ${#m} == 0 ]] || print -r -- $m >> ${SCD_HISTFILE}
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
# The "action" function is called when there is just one target directory.
|
||||
_scd_Y19oug_action() {
|
||||
cd $1 || return $?
|
||||
if [[ -z $SCD_SCRIPT && -n $RUNNING_AS_COMMAND ]]; then
|
||||
print -u2 "Warning: running as command with SCD_SCRIPT undefined."
|
||||
fi
|
||||
if [[ -n $SCD_SCRIPT ]]; then
|
||||
print -r "cd ${(q)1}" >| $SCD_SCRIPT
|
||||
fi
|
||||
}
|
||||
|
||||
# Match and rank patterns to the index file
|
||||
# set global arrays dmatching and drank
|
||||
_scd_Y19oug_match() {
|
||||
## single argument that is an existing directory or directory alias
|
||||
if [[ -z $opt_all && $# == 1 ]] && \
|
||||
[[ -d ${d::=$1} || -d ${d::=${nameddirs[$1]}} ]] && [[ -x $d ]];
|
||||
then
|
||||
_scd_Y19oug_abspath dmatching $d
|
||||
drank[${dmatching[1]}]=1
|
||||
return
|
||||
fi
|
||||
|
||||
# ignore case unless there is an argument with an uppercase letter
|
||||
[[ "$*" == *[[:upper:]]* ]] || ICASE='(#i)'
|
||||
# support "$" as an anchor for the directory name ending
|
||||
argv=( ${argv/(#m)?[$](#e)/${MATCH[1]}(#e)} )
|
||||
|
||||
# calculate rank of all directories in the SCD_HISTFILE and keep it as drank
|
||||
# include a dummy entry for splitting of an empty string is buggy
|
||||
[[ -s $SCD_HISTFILE ]] && drank=( ${(f)"$(
|
||||
print -l /dev/null -10
|
||||
<$SCD_HISTFILE \
|
||||
awk -v epochseconds=$EPOCHSECONDS -v meanlife=$SCD_MEANLIFE '
|
||||
BEGIN { FS = "[:;]"; }
|
||||
length($0) < 4096 && $2 > 0 {
|
||||
tau = 1.0 * ($2 - epochseconds) / meanlife;
|
||||
if (tau < -6.9078) tau = -6.9078;
|
||||
prob = exp(tau);
|
||||
sub(/^[^;]*;/, "");
|
||||
if (NF) ptot[$0] += prob;
|
||||
}
|
||||
END { for (di in ptot) { print di; print ptot[di]; } }'
|
||||
)"}
|
||||
)
|
||||
unset "drank[/dev/null]"
|
||||
|
||||
# filter drank to the entries that match all arguments
|
||||
for a; do
|
||||
p=${ICASE}"*(${a})*"
|
||||
drank=( ${(kv)drank[(I)${~p}]} )
|
||||
done
|
||||
# require at least one argument matches the directory name
|
||||
p=${ICASE}"*(${(j:|:)argv})[^/]#"
|
||||
drank=( ${(kv)drank[(I)${~p}]} )
|
||||
|
||||
# build a list of matching directories reverse-sorted by their probabilities
|
||||
dmatching=( ${(f)"$(
|
||||
for d p in ${(kv)drank}; do
|
||||
print -r -- "$p $d";
|
||||
done | sort -grk1 | cut -d ' ' -f 2-
|
||||
)"}
|
||||
)
|
||||
|
||||
# do not match $HOME or $PWD when run without arguments
|
||||
if [[ $# == 0 ]]; then
|
||||
dmatching=( ${dmatching:#(${HOME}|${PWD})} )
|
||||
fi
|
||||
|
||||
# keep at most SCD_MENUSIZE of matching and valid directories
|
||||
m=( )
|
||||
for d in $dmatching; do
|
||||
[[ ${#m} == $SCD_MENUSIZE ]] && break
|
||||
[[ -d $d && -x $d ]] && m+=$d
|
||||
done
|
||||
dmatching=( $m )
|
||||
|
||||
# find the maximum rank
|
||||
maxrank=0.0
|
||||
for d in $dmatching; do
|
||||
[[ ${drank[$d]} -lt maxrank ]] || maxrank=${drank[$d]}
|
||||
done
|
||||
|
||||
# discard all directories below the rank threshold
|
||||
threshold=$(( maxrank * SCD_THRESHOLD ))
|
||||
if [[ -n ${opt_all} ]]; then
|
||||
threshold=0
|
||||
fi
|
||||
dmatching=( ${^dmatching}(Ne:'(( ${drank[$REPLY]} >= threshold ))':) )
|
||||
}
|
||||
|
||||
_scd_Y19oug_match $*
|
||||
|
||||
## process whatever directories that remained
|
||||
if [[ ${#dmatching} == 0 ]]; then
|
||||
print -u2 "No matching directory."
|
||||
$EXIT 1
|
||||
fi
|
||||
|
||||
## build formatted directory aliases for selection menu or list display
|
||||
for d in $dmatching; do
|
||||
if [[ -n ${opt_verbose} ]]; then
|
||||
dalias[$d]=$(printf "%.3g %s" ${drank[$d]} $d)
|
||||
else
|
||||
dalias[$d]=$(print -Dr -- $d)
|
||||
fi
|
||||
done
|
||||
|
||||
## process the --list option
|
||||
if [[ -n $opt_list ]]; then
|
||||
for d in $dmatching; do
|
||||
print -r -- "# ${dalias[$d]}"
|
||||
print -r -- $d
|
||||
done
|
||||
$EXIT
|
||||
fi
|
||||
|
||||
## process single directory match
|
||||
if [[ ${#dmatching} == 1 ]]; then
|
||||
_scd_Y19oug_action $dmatching
|
||||
$EXIT $?
|
||||
fi
|
||||
|
||||
## here we have multiple matches - display selection menu
|
||||
a=( {a-z} {A-Z} )
|
||||
a=( ${a[1,${#dmatching}]} )
|
||||
p=( )
|
||||
for i in {1..${#dmatching}}; do
|
||||
[[ -n ${a[i]} ]] || break
|
||||
p+="${a[i]}) ${dalias[${dmatching[i]}]}"
|
||||
done
|
||||
|
||||
print -c -r -- $p
|
||||
|
||||
if read -s -k 1 d && [[ ${i::=${a[(I)$d]}} -gt 0 ]]; then
|
||||
_scd_Y19oug_action ${dmatching[i]}
|
||||
$EXIT $?
|
||||
fi
|
||||
@@ -1,19 +1,17 @@
|
||||
## The scd script should autoload as a shell function.
|
||||
autoload scd
|
||||
autoload -Uz scd
|
||||
|
||||
|
||||
## If the scd function exists, define a change-directory-hook function
|
||||
## to record visited directories in the scd index.
|
||||
if [[ ${+functions[scd]} == 1 ]]; then
|
||||
scd_chpwd_hook() { scd --add $PWD }
|
||||
autoload add-zsh-hook
|
||||
add-zsh-hook chpwd scd_chpwd_hook
|
||||
chpwd_scd() { scd --add $PWD }
|
||||
autoload -Uz add-zsh-hook
|
||||
add-zsh-hook chpwd chpwd_scd
|
||||
fi
|
||||
|
||||
|
||||
## Allow scd usage with unquoted wildcard characters such as "*" or "?".
|
||||
alias scd='noglob scd'
|
||||
|
||||
|
||||
## Load the directory aliases created by scd if any.
|
||||
if [[ -s ~/.scdalias.zsh ]]; then source ~/.scdalias.zsh; fi
|
||||
if [[ -s ~/.scdalias.zsh ]]; then
|
||||
source ~/.scdalias.zsh
|
||||
fi
|
||||
|
||||
@@ -1,84 +1,58 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
### SDKMAN Autocomplete for Oh My Zsh
|
||||
|
||||
# This is the output from sdkman. All the these options are supported at the
|
||||
# moment.
|
||||
|
||||
# Usage: sdk <command> [candidate] [version]
|
||||
# sdk offline <enable|disable>
|
||||
#
|
||||
# commands:
|
||||
# install or i <candidate> [version] [local-path]
|
||||
# uninstall or rm <candidate> <version>
|
||||
# list or ls [candidate]
|
||||
# use or u <candidate> <version>
|
||||
# default or d <candidate> [version]
|
||||
# current or c [candidate]
|
||||
# upgrade or ug [candidate]
|
||||
# version or v
|
||||
# broadcast or b
|
||||
# help or h
|
||||
# offline [enable|disable]
|
||||
# selfupdate [force]
|
||||
# update
|
||||
# flush <broadcast|archives|temp>
|
||||
#
|
||||
# candidate : the SDK to install: groovy, scala, grails, gradle, kotlin, etc.
|
||||
# use list command for comprehensive list of candidates
|
||||
# eg: $ sdk list
|
||||
# version : where optional, defaults to latest stable if not provided
|
||||
# eg: $ sdk install groovy
|
||||
# local-path : optional path to an existing local installation
|
||||
# eg: $ sdk install groovy 2.4.13-local /opt/groovy-2.4.13
|
||||
|
||||
local _sdk_commands=(
|
||||
install i
|
||||
uninstall rm
|
||||
list ls
|
||||
use u
|
||||
default d
|
||||
current c
|
||||
upgrade ug
|
||||
version v
|
||||
broadcast b
|
||||
help h
|
||||
offline
|
||||
selfupdate
|
||||
update
|
||||
flush
|
||||
)
|
||||
|
||||
_listInstalledVersions() {
|
||||
__sdkman_build_version_csv $1 | sed -e "s/,/ /g"
|
||||
}
|
||||
|
||||
_listInstallableVersions() {
|
||||
# Remove local (+) and installed (*) versions from the list
|
||||
__sdkman_list_versions $1 | sed -e '/^[^ ]/d;s/[+*] [^ ]\+//g;s/>//g'
|
||||
}
|
||||
|
||||
_listAllVersion() {
|
||||
# Remove (*), (+), and (>) characters from the list
|
||||
__sdkman_list_versions $1 | sed -e '/^[^ ]/d;s/[*+>] //g'
|
||||
}
|
||||
|
||||
_sdk () {
|
||||
case $CURRENT in
|
||||
2) compadd -- $_sdk_commands ;;
|
||||
3) case "$words[2]" in
|
||||
i|install|rm|uninstall|ls|list|u|use|d|default|c|current|ug|upgrade)
|
||||
compadd -- $SDKMAN_CANDIDATES ;;
|
||||
offline) compadd -- enable disable ;;
|
||||
selfupdate) compadd -- force ;;
|
||||
flush) compadd -- broadcast archives temp ;;
|
||||
esac
|
||||
;;
|
||||
4) case "$words[2]" in
|
||||
rm|uninstall|d|default) compadd -- $(_listInstalledVersions $words[3]) ;;
|
||||
i|install) compadd -- $(_listInstallableVersions $words[3]) ;;
|
||||
u|use) compadd -- $(_listAllVersion $words[3]) ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
_sdk() {
|
||||
case "${CURRENT}" in
|
||||
2)
|
||||
compadd -X $'Commands:\n' -- "${${(Mk)functions[@]:#__sdk_*}[@]#__sdk_}"
|
||||
compadd -n rm
|
||||
;;
|
||||
3)
|
||||
case "${words[2]}" in
|
||||
l|ls|list|i|install)
|
||||
compadd -X $'Candidates:\n' -- "${SDKMAN_CANDIDATES[@]}"
|
||||
;;
|
||||
ug|upgrade|h|home|c|current|u|use|d|default|rm|uninstall)
|
||||
compadd -X $'Installed Candidates:\n' -- "${${(u)${(f)$(find -L -- "${SDKMAN_CANDIDATES_DIR}" -mindepth 2 -maxdepth 2 -type d)}[@]:h}[@]:t}"
|
||||
;;
|
||||
e|env)
|
||||
compadd init
|
||||
;;
|
||||
offline)
|
||||
compadd enable disable
|
||||
;;
|
||||
selfupdate)
|
||||
compadd force
|
||||
;;
|
||||
flush)
|
||||
compadd archives broadcast temp version
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
4)
|
||||
case "${words[2]}" in
|
||||
i|install)
|
||||
setopt localoptions kshglob
|
||||
if [[ "${words[3]}" == 'java' ]]; then
|
||||
compadd -X $'Installable Versions of java:\n' -- "${${${${${(f)$(__sdkman_list_versions "${words[3]}")}[@]:5:-4}[@]:#* | (local only|installed ) | *}[@]##* | | }[@]%%+( )}"
|
||||
else
|
||||
compadd -X "Installable Versions of ${words[3]}:"$'\n' -- "${${(z)${(M)${(f)${$(__sdkman_list_versions "${words[3]}")//[*+>]+( )/-}}[@]:# *}[@]}[@]:#-*}"
|
||||
fi
|
||||
;;
|
||||
h|home|u|use|d|default|rm|uninstall)
|
||||
compadd -X "Installed Versions of ${words[3]}:"$'\n' -- "${${(f)$(find -L -- "${SDKMAN_CANDIDATES_DIR}/${words[3]}" -mindepth 1 -maxdepth 1 -type d -not -name 'current')}[@]:t}"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
5)
|
||||
case "${words[2]}" in
|
||||
i|install)
|
||||
_files -X "Path to Local Installation of ${words[3]} ${words[4]}:"$'\n' -/
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
compdef _sdk sdk
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
# REQUIRE: ack
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
if [ ! -x $(which ack) ]; then
|
||||
echo \'ack\' is not installed!
|
||||
exit -1
|
||||
if (( ! $+commands[ack] )); then
|
||||
echo "'ack' is not installed!"
|
||||
return
|
||||
fi
|
||||
|
||||
ajs() {
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
(( $+commands[stack] )) || return
|
||||
|
||||
autoload -U +X bashcompinit && bashcompinit
|
||||
source <(stack --bash-completion-script stack)
|
||||
|
||||
@@ -37,9 +37,11 @@ alias stn=create_project
|
||||
_sublime_paths=(
|
||||
"/usr/local/bin/subl"
|
||||
"/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text 4.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
|
||||
"/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text 4.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text 3.app/Contents/SharedSupport/bin/subl"
|
||||
"$HOME/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
|
||||
)
|
||||
|
||||
@@ -13,18 +13,42 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
sudo-command-line() {
|
||||
[[ -z $BUFFER ]] && zle up-history
|
||||
if [[ $BUFFER == sudo\ * ]]; then
|
||||
LBUFFER="${LBUFFER#sudo }"
|
||||
elif [[ $BUFFER == $EDITOR\ * ]]; then
|
||||
LBUFFER="${LBUFFER#$EDITOR }"
|
||||
LBUFFER="sudoedit $LBUFFER"
|
||||
[[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)"
|
||||
|
||||
# Save beginning space
|
||||
local WHITESPACE=""
|
||||
if [[ ${LBUFFER:0:1} == " " ]] ; then
|
||||
WHITESPACE=" "
|
||||
LBUFFER="${LBUFFER:1}"
|
||||
fi
|
||||
|
||||
if [[ -n $EDITOR && $BUFFER == $EDITOR\ * ]]; then
|
||||
if [[ ${#LBUFFER} -le ${#EDITOR} ]]; then
|
||||
RBUFFER=" ${BUFFER#$EDITOR }"
|
||||
LBUFFER="sudoedit"
|
||||
else
|
||||
LBUFFER="sudoedit ${LBUFFER#$EDITOR }"
|
||||
fi
|
||||
elif [[ $BUFFER == sudoedit\ * ]]; then
|
||||
LBUFFER="${LBUFFER#sudoedit }"
|
||||
LBUFFER="$EDITOR $LBUFFER"
|
||||
if [[ ${#LBUFFER} -le 8 ]]; then
|
||||
RBUFFER=" ${BUFFER#sudoedit }"
|
||||
LBUFFER="$EDITOR"
|
||||
else
|
||||
LBUFFER="$EDITOR ${LBUFFER#sudoedit }"
|
||||
fi
|
||||
elif [[ $BUFFER == sudo\ * ]]; then
|
||||
if [[ ${#LBUFFER} -le 4 ]]; then
|
||||
RBUFFER="${BUFFER#sudo }"
|
||||
LBUFFER=""
|
||||
else
|
||||
LBUFFER="${LBUFFER#sudo }"
|
||||
fi
|
||||
else
|
||||
LBUFFER="sudo $LBUFFER"
|
||||
fi
|
||||
|
||||
# Preserve beginning space
|
||||
LBUFFER="${WHITESPACE}${LBUFFER}"
|
||||
}
|
||||
zle -N sudo-command-line
|
||||
# Defined shortcut keys: [Esc] [Esc]
|
||||
|
||||
@@ -16,8 +16,8 @@ plugins=(... systemadmin)
|
||||
| clr | `clear; echo Currently logged in on $TTY, as $USER in directory $PWD.` | Clears the screen and prints the current user, TTY, and directory |
|
||||
| path | `print -l $path` | Displays PATH with each entry on a separate line |
|
||||
| mkdir | `mkdir -pv` | Automatically create parent directories and display verbose output |
|
||||
| psmem | `ps -e -orss=,args= \| sort -b -k1,1n` | Display the processes using the most memory |
|
||||
| psmem10 | `ps -e -orss=,args= \| sort -b -k1,1n \| head -10` | Display the top 10 processes using the most memory |
|
||||
| psmem | `ps -e -orss=,args= \| sort -b -k1 -nr` | Display the processes using the most memory |
|
||||
| psmem10 | `ps -e -orss=,args= \| sort -b -k1 -nr \| head -10` | Display the top 10 processes using the most memory |
|
||||
| pscpu | `ps -e -o pcpu,cpu,nice,state,cputime,args \|sort -k1 -nr` | Display the top processes using the most CPU |
|
||||
| pscpu10 | `ps -e -o pcpu,cpu,nice,state,cputime,args \|sort -k1 -nr \| head -10` | Display the top 10 processes using the most CPU |
|
||||
| hist10 | `print -l ${(o)history%% *} \| uniq -c \| sort -nr \| head -n 10` | Display the top 10 most used commands in the history |
|
||||
|
||||
@@ -25,8 +25,8 @@ alias clr='clear; echo Currently logged in on $TTY, as $USER in directory $PWD.'
|
||||
alias path='print -l $path'
|
||||
alias mkdir='mkdir -pv'
|
||||
# get top process eating memory
|
||||
alias psmem='ps -e -orss=,args= | sort -b -k1,1n'
|
||||
alias psmem10='ps -e -orss=,args= | sort -b -k1,1n| head -10'
|
||||
alias psmem='ps -e -orss=,args= | sort -b -k1 -nr'
|
||||
alias psmem10='ps -e -orss=,args= | sort -b -k1 -nr | head -10'
|
||||
# get top process eating cpu if not work try excute : export LC_ALL='C'
|
||||
alias pscpu='ps -e -o pcpu,cpu,nice,state,cputime,args|sort -k1,1n -nr'
|
||||
alias pscpu10='ps -e -o pcpu,cpu,nice,state,cputime,args|sort -k1,1n -nr | head -10'
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Plugin for Terraform, a tool from Hashicorp for managing infrastructure safely and efficiently.
|
||||
|
||||
Current as of Terraform v0.11.7
|
||||
Current as of Terraform v0.13
|
||||
|
||||
### Requirements
|
||||
|
||||
@@ -17,6 +17,7 @@ plugins=(... terraform)
|
||||
```
|
||||
|
||||
* Type `terraform` into your prompt and hit `TAB` to see available completion options
|
||||
* Type `tf` into your prompt as a short alias to `terraform`
|
||||
|
||||
### Expanding ZSH prompt with current Terraform workspace name
|
||||
|
||||
|
||||
@@ -77,7 +77,8 @@ __fmt() {
|
||||
'-list=[(true) List files whose formatting differs (always false if using STDIN)]' \
|
||||
'-write=[(true) Write result to source file instead of STDOUT (always false if using STDIN or -check)]' \
|
||||
'-diff=[(false) Display diffs of formatting changes]' \
|
||||
'-check=[(false) Check if the input is formatted. Exit status will be 0 if all input is properly formatted and non-zero otherwise.]'
|
||||
'-check=[(false) Check if the input is formatted. Exit status will be 0 if all input is properly formatted and non-zero otherwise.]' \
|
||||
'-recursive=[(false) Also process files in subdirectories. By default, only the given directory (or current directory) is processed.]'
|
||||
}
|
||||
|
||||
__get() {
|
||||
|
||||
@@ -7,3 +7,5 @@ function tf_prompt_info() {
|
||||
echo "[${workspace}]"
|
||||
fi
|
||||
}
|
||||
|
||||
alias tf='terraform'
|
||||
|
||||
@@ -3,6 +3,7 @@ This plugin allows to display command's execution time in a very nonintrusive wa
|
||||
Timer can be tuned by these two variables:
|
||||
* `TIMER_PRECISION` allows to control number of decimal places (default `1`)
|
||||
* `TIMER_FORMAT` allows to adjust display format (default `'/%d'`)
|
||||
* `TIMER_THRESHOLD` allows to set the minimum execution time that causes the timer to be shown (default `0`)
|
||||
|
||||
Sample session:
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
zmodload zsh/datetime
|
||||
|
||||
__timer_current_time() {
|
||||
perl -MTime::HiRes=time -e'print time'
|
||||
zmodload zsh/datetime
|
||||
echo $EPOCHREALTIME
|
||||
}
|
||||
|
||||
__timer_format_duration() {
|
||||
@@ -19,9 +22,11 @@ __timer_display_timer_precmd() {
|
||||
local cmd_end_time=$(__timer_current_time)
|
||||
local tdiff=$((cmd_end_time - __timer_cmd_start_time))
|
||||
unset __timer_cmd_start_time
|
||||
local tdiffstr=$(__timer_format_duration ${tdiff})
|
||||
local cols=$((COLUMNS - ${#tdiffstr} - 1))
|
||||
echo -e "\033[1A\033[${cols}C ${tdiffstr}"
|
||||
if [[ -z "${TIMER_THRESHOLD}" || ${tdiff} -ge "${TIMER_THRESHOLD}" ]]; then
|
||||
local tdiffstr=$(__timer_format_duration ${tdiff})
|
||||
local cols=$((COLUMNS - ${#tdiffstr} - 1))
|
||||
echo -e "\033[1A\033[${cols}C ${tdiffstr}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user