Make it look like exa

This commit is contained in:
Thomas Forgione 2023-11-08 12:19:09 +01:00
parent 8e4f32e9b9
commit eeb493442b
2 changed files with 121 additions and 3 deletions

View File

@ -22,14 +22,86 @@ $env.config.filesize = {
# ls aliases # ls aliases
alias _ls = ls alias _ls = ls
def _ls_format_mode [mode: string] {
let chars = echo $mode | split chars
let r1 = (if (echo $chars | get 0) == "r" {
[(ansi yellow_bold), "r", (ansi reset)]
} else {
[(ansi grey), "-"]
} | str join)
let w1 = (if (echo $chars | get 1) == "w" {
[(ansi red_bold), "w", (ansi reset)]
} else {
[(ansi grey), "-"]
} | str join)
let x1 = (if (echo $chars | get 2) == "x" {
[(ansi green_bold), "x", (ansi reset)]
} else {
[(ansi grey), "-"]
} | str join)
let r2 = (if (echo $chars | get 3) == "r" {
[(ansi yellow), "r", (ansi reset)]
} else {
[(ansi grey), "-"]
} | str join)
let w2 = (if (echo $chars | get 4) == "w" {
[(ansi red), "w"]
} else {
[(ansi grey), "-"]
} | str join)
let x2 = (if (echo $chars | get 5) == "x" {
[(ansi green), "x"]
} else {
[(ansi grey), "-"]
} | str join)
let r3 = (if (echo $chars | get 6) == "r" {
[(ansi yellow), "r", (ansi reset)]
} else {
[(ansi grey), "-"]
} | str join)
let w3 = (if (echo $chars | get 7) == "w" {
[(ansi red), "w"]
} else {
[(ansi grey), "-"]
} | str join)
let x3 = (if (echo $chars | get 8) == "x" {
[(ansi green), "x"]
} else {
[(ansi grey), "-"]
} | str join)
[
$r1
$w1
$x1
$r2
$w2
$x2
$r3
$w3
$x3
] | str join
}
def l [dir?: string] { def l [dir?: string] {
_ls (if $dir == null { "" } else { $dir }) _ls (if $dir == null { "" } else { $dir })
| sort-by type name -i | grid -c | sort-by type name -i
| grid -c
} }
def ls [dir?: string] { def ls [dir?: string] {
_ls (if $dir == null { "" } else { $dir }) _ls (if $dir == null { "" } else { $dir })
| sort-by type name -i | grid -c | sort-by type name -i
| grid -c
} }
def la [dir?: string] { def la [dir?: string] {
@ -40,8 +112,9 @@ def la [dir?: string] {
def ll [dir?: string] { def ll [dir?: string] {
_ls -l (if $dir == null { "" } else { $dir }) _ls -l (if $dir == null { "" } else { $dir })
| each {|x| return (echo $x | update mode (_ls_format_mode $x.mode))}
| sort-by type name -i | sort-by type name -i
| select name type target user size modified | select mode name target user size modified
} }
# cool df # cool df

View File

@ -175,6 +175,51 @@ $env.NU_PLUGIN_DIRS = [
($nu.default-config-dir | path join 'plugins') # add <nushell-config-dir>/plugins ($nu.default-config-dir | path join 'plugins') # add <nushell-config-dir>/plugins
] ]
# LS_COLORS so that ls mimics the colors of exa
$env.LS_COLORS = ([
# File types
"ex=1;32" # Executables
"di=1;34" # Directories
"ln=36" # Links
"or=31" # Orphan
# Media types
"*.pdf=32" # PDF files
# Images
"*.webp=35" # Webp image
"*.png=35" # PNG image
"*.jpg=35" # JPG image
# Music
"*.ogg=36" # OGG sound
"*.mp3=36" # MP3 sound
# Videos
"*.mp4=1;35" # MP4 video
"*.avi=1;35" # AVI video
"*.webm=1;35" # WebM video
# Bold yellow: source code
"*.c=1;33" # C source
"*.h=1;33" # C header
"*.cpp=1;33" # C++ source
"*.hpp=1;33" # C++ header
"*.inl=1;33" # C++ include
"*.cxx=1;33" # C++ include
"*.py=1;33" # Python
"*.js=1;33" # JavaScript
"*.ts=1;33" # TypeScript
"*.rs=1;33" # Rust
"*.elm=1;33" # Elm
# Build / doc files
"*Makefile=1;4;33" # Makefile
"*Dockerfile=1;4;33" # Dockerfile
"*.md=1;4;33" # Markdown
"*.toml=1;4;33" # Toml
] | str join ":")
# French by default # French by default
$env.LANG = fr_FR.UTF-8 $env.LANG = fr_FR.UTF-8