Nushell: Difference between revisions
Add a extra condition to invoke `nu` in `.bashrc`. If `bash` is invoked with `-l` AND `-c`, the original `.bashrc` will start `nu` instead of executing the command. It broke `niri-session` for me. `nu` should not be started if the command string is not empty. |
Dark Looon (talk | contribs) |
||
| Line 33: | Line 33: | ||
# Common ls aliases and sort them by type and then name | # Common ls aliases and sort them by type and then name | ||
# Inspired by https://github.com/nushell/nushell/issues/7190 | # Inspired by https://github.com/nushell/nushell/issues/7190 | ||
def lla [...args] { ls -la ...(if $args == [] {["."]} else {$args}) | def lla [...args] { ls -la ...(if $args == [] {["."]} else {$args}) | sort-by type name -i } | ||
def la [...args] { ls -a ...(if $args == [] {["."]} else {$args}) | def la [...args] { ls -a ...(if $args == [] {["."]} else {$args}) | sort-by type name -i } | ||
def ll [...args] { ls -l ...(if $args == [] {["."]} else {$args}) | def ll [...args] { ls -l ...(if $args == [] {["."]} else {$args}) | sort-by type name -i } | ||
def l [...args] { ls ...(if $args == [] {["."]} else {$args}) | def l [...args] { ls ...(if $args == [] {["."]} else {$args}) | sort-by type name -i } | ||
# Completions | # Completions | ||
# mainly pieced together from https://www.nushell.sh/cookbook/external_completers.html | # mainly pieced together from https://www.nushell.sh/cookbook/external_completers.html | ||
# | # carapace completions https://www.nushell.sh/cookbook/external_completers.html#carapace-completer | ||
# + fix https://www.nushell.sh/cookbook/external_completers.html#err-unknown-shorthand-flag-using-carapace | # + fix https://www.nushell.sh/cookbook/external_completers.html#err-unknown-shorthand-flag-using-carapace | ||
# enable the package and integration bellow | # enable the package and integration bellow | ||
let carapace_completer = { | let carapace_completer = {|spans: list<string>| | ||
carapace $spans.0 nushell ...$spans | carapace $spans.0 nushell ...$spans | ||
| from json | | from json | ||
| if ($in | default [] | | if ($in | default [] | where value == $"($spans | last)ERR" | is-empty) { $in } else { null } | ||
} | } | ||
# some completions are only available through a bridge | # some completions are only available through a bridge | ||
| Line 55: | Line 55: | ||
# fish completions https://www.nushell.sh/cookbook/external_completers.html#fish-completer | # fish completions https://www.nushell.sh/cookbook/external_completers.html#fish-completer | ||
let fish_completer = { | let fish_completer = {|spans| | ||
${lib.getExe pkgs.fish} --command $'complete "--do-complete=($spans | ${lib.getExe pkgs.fish} --command $'complete "--do-complete=($spans | str join " ")"' | ||
| $"value(char tab)description(char newline)" + $in | | $"value(char tab)description(char newline)" + $in | ||
| from tsv --flexible --no-infer | | from tsv --flexible --no-infer | ||
| Line 62: | Line 62: | ||
# zoxide completions https://www.nushell.sh/cookbook/external_completers.html#zoxide-completer | # zoxide completions https://www.nushell.sh/cookbook/external_completers.html#zoxide-completer | ||
let zoxide_completer = { | let zoxide_completer = {|spans| | ||
$spans | $spans | skip 1 | zoxide query -l ...$in | lines | where {|x| $x != $env.PWD} | ||
} | } | ||
| Line 69: | Line 69: | ||
# the default will be carapace, but you can also switch to fish | # the default will be carapace, but you can also switch to fish | ||
# https://www.nushell.sh/cookbook/external_completers.html#alias-completions | # https://www.nushell.sh/cookbook/external_completers.html#alias-completions | ||
let multiple_completers = { | let multiple_completers = {|spans| | ||
## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions | ## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions | ||
let expanded_alias = scope aliases | let expanded_alias = scope aliases | ||
| Line 78: | Line 78: | ||
$spans | $spans | ||
| skip 1 | | skip 1 | ||
| prepend ($expanded_alias | split row ' ' | | prepend ($expanded_alias | split row ' ' | take 1) | ||
} else { | } else { | ||
$spans | $spans | ||
| Line 85: | Line 85: | ||
match $spans.0 { | match $spans.0 { | ||
__zoxide_z | __zoxide_z | __zoxide_zi => $zoxide_completer | ||
_ => $carapace_completer | _ => $carapace_completer | ||
} | } | do $in $spans | ||
} | } | ||
| Line 106: | Line 106: | ||
} | } | ||
} | } | ||
$env.PATH = ($env.PATH | $env.PATH = ($env.PATH | | ||
split row (char esep) | split row (char esep) | | ||
prepend /home/myuser/.apps | prepend /home/myuser/.apps | | ||
append /usr/bin/env | append /usr/bin/env | ||
) | ) | ||
| Line 134: | Line 134: | ||
} | } | ||
</nowiki>|name=~/.config/nixpkgs/home.nix|lang=nix}} | </nowiki>|name=~/.config/nixpkgs/home.nix|lang=nix}} | ||
==See also== | ==See also== | ||
* [[Command Shell]] | * [[Command Shell]] | ||
[[Category:Shell]] | [[Category:Shell]] | ||