parent
51bf9fc2de
commit
6a65ac9025
3 changed files with 166 additions and 2 deletions
@ -0,0 +1,101 @@ |
||||
# eza plugin |
||||
|
||||
This provides aliases that invoke the [`eza`](https://github.com/eza-community/eza) utility rather than `ls` |
||||
|
||||
To use it add `eza` to the plugins array in your zshrc file: |
||||
|
||||
```zsh |
||||
plugins=(... eza) |
||||
``` |
||||
|
||||
## Configuration |
||||
|
||||
All configurations are done using the `zstyle` command in the `:omz:plugins:eza` namespace. |
||||
|
||||
**NOTE:** The configuring needs to be done prior to OMZ loading the plugins. When the plugin is loaded, |
||||
changing the `zstyle` won't have any effect. |
||||
|
||||
### `dirs-first` |
||||
|
||||
```zsh |
||||
zstyle ':omz:plugins:eza' 'dirs-first' yes|no |
||||
``` |
||||
|
||||
If `yes`, directories will be grouped first. |
||||
|
||||
Default: `no` |
||||
|
||||
### `git-status` |
||||
|
||||
```zsh |
||||
zstyle ':omz:plugins:eza' 'git-status' yes|no |
||||
``` |
||||
|
||||
If `yes`, always add `--git` flag to indicate git status (if tracked / in a git repo). |
||||
|
||||
Default: `no` |
||||
|
||||
### `header` |
||||
|
||||
```zsh |
||||
zstyle ':omz:plugins:eza' 'header' yes|no |
||||
``` |
||||
|
||||
If `yes`, always add `-h` flag to add a header row for each column. |
||||
|
||||
Default: `no` |
||||
|
||||
### `show-group` |
||||
|
||||
```zsh |
||||
zstyle ':omz:plugins:eza' 'show-group' yes|no |
||||
``` |
||||
|
||||
If `yes` (default), always add `-g` flag to show the group ownership. |
||||
|
||||
Default: `yes` |
||||
|
||||
### `size-prefix` |
||||
|
||||
```zsh |
||||
zstyle ':omz:plugins:eza' 'size-prefix' (binary|none|si) |
||||
``` |
||||
|
||||
Choose the prefix to be used in displaying file size: |
||||
|
||||
- `binary` -- use [binary prefixes](https://en.wikipedia.org/wiki/Binary_prefix) such as "Ki", "Mi", "Gi" and |
||||
so on |
||||
- `none` -- don't use any prefix, show size in bytes |
||||
- `si` (default) -- use [Metric/S.I. prefixes](https://en.wikipedia.org/wiki/Metric_prefix) |
||||
|
||||
Default: `si` |
||||
|
||||
### `time-style` |
||||
|
||||
```zsh |
||||
zstyle ':omz:plugins:eza' 'time-style' $TIME_STYLE |
||||
``` |
||||
|
||||
Sets the `--time-style` option of `eza`. (See `man eza` for the options) |
||||
|
||||
Default: Not set, which means the default behavior of `eza` will take place. |
||||
|
||||
## Aliases |
||||
|
||||
**Notes:** |
||||
|
||||
- Aliases may be modified by Configuration |
||||
- The term "files" without "only" qualifier means both files & directories |
||||
|
||||
| Alias | Command | Description | |
||||
| ------ | ----------------- | -------------------------------------------------------------------------- | |
||||
| `la` | `eza -la` | List all files (except . and ..) as a long list | |
||||
| `ldot` | `eza -ld .*` | List dotfiles only (directories shown as entries instead of recursed into) | |
||||
| `lD` | `eza -lD` | List only directories (excluding dotdirs) as a long list | |
||||
| `lDD` | `eza -laD` | List only directories (including dotdirs) as a long list | |
||||
| `ll` | `eza -l` | List files as a long list | |
||||
| `ls` | `eza` | Plain eza call | |
||||
| `lsd` | `eza -d` | List specified files with directories as entries, in a grid | |
||||
| `lsdl` | `eza -dl` | List specified files with directories as entries, in a long list | |
||||
| `lS` | `eza -l -ssize` | List files as a long list, sorted by size | |
||||
| `lT` | `eza -l -snewest` | List files as a long list, sorted by date (newest last) | |
||||
@ -0,0 +1,62 @@ |
||||
if ! (( $+commands[eza] )); then |
||||
print "zsh eza plugin: eza not found. Please install eza before using this plugin." >&2 |
||||
return 1 |
||||
fi |
||||
|
||||
typeset -a _EZA_HEAD |
||||
typeset -a _EZA_TAIL |
||||
|
||||
function _configure_eza() { |
||||
local _val |
||||
# Get the head flags |
||||
if zstyle -T ':omz:plugins:eza' 'show-group'; then |
||||
_EZA_HEAD+=("g") |
||||
fi |
||||
if zstyle -t ':omz:plugins:eza' 'header'; then |
||||
_EZA_HEAD+=("h") |
||||
fi |
||||
zstyle -s ':omz:plugins:eza' 'size-prefix' _val |
||||
case "${_val:l}" in |
||||
binary) |
||||
_EZA_HEAD+=("b") |
||||
;; |
||||
none) |
||||
_EZA_HEAD+=("B") |
||||
;; |
||||
esac |
||||
# Get the tail long-options |
||||
if zstyle -t ':omz:plugins:eza' 'dirs-first'; then |
||||
_EZA_TAIL+=("--group-directories-first") |
||||
fi |
||||
if zstyle -t ':omz:plugins:eza' 'git-status'; then |
||||
_EZA_TAIL+=("--git") |
||||
fi |
||||
zstyle -s ':omz:plugins:eza' 'time-style' _val |
||||
if [[ $_val ]]; then |
||||
_EZA_TAIL+=("--time-style='$_val'") |
||||
fi |
||||
} |
||||
|
||||
_configure_eza |
||||
|
||||
function _alias_eza() { |
||||
local _head="${(j::)_EZA_HEAD}$2" |
||||
local _tail="${(j: :)_EZA_TAIL}" |
||||
alias "$1"="eza${_head:+ -}${_head}${_tail:+ }${_tail}${3:+ }$3" |
||||
} |
||||
|
||||
_alias_eza la la |
||||
_alias_eza ldot ld ".*" |
||||
_alias_eza lD lD |
||||
_alias_eza lDD lDa |
||||
_alias_eza ll l |
||||
_alias_eza ls |
||||
_alias_eza lsd d |
||||
_alias_eza lsdl dl |
||||
_alias_eza lS "l -ssize" |
||||
_alias_eza lT "l -snewest" |
||||
|
||||
unfunction _alias_eza |
||||
unfunction _configure_eza |
||||
unset _EZA_HEAD |
||||
unset _EZA_TAIL |
||||
Loading…
Reference in new issue