Enabled transient prompt for nushell so we only display the line character and attempt to display command durations for past prompts. Not sure if command duration is working correctly. If not, might have to revert this change.
133 lines
3.8 KiB
Text
133 lines
3.8 KiB
Text
# config.nu
|
|
#
|
|
# Installed by:
|
|
# version = "0.102.0"
|
|
#
|
|
# This file is used to override default Nushell settings, define
|
|
# (or import) custom commands, or run any other startup tasks.
|
|
# See https://www.nushell.sh/book/configuration.html
|
|
#
|
|
# This file is loaded after env.nu and before login.nu
|
|
#
|
|
$env.config.show_banner = false
|
|
|
|
$env.config.edit_mode = "vi"
|
|
# Enable same behavior as fzf-tab-complete for zsh
|
|
$env.config.completions.algorithm = "fuzzy"
|
|
|
|
$env.PROMPT_INDICATOR = ""
|
|
$env.PROMPT_MULTILINE_INDICATOR = "::: " # overwritten by starship
|
|
# enable transient prompt with starship
|
|
$env.TRANSIENT_PROMPT_COMMAND = ^starship module character
|
|
$env.TRANSIENT_PROMPT_COMMAND_RIGHT = {|| ^starship module cmd_duration }
|
|
|
|
# FIXME: Disabled for now to use starship prompts instead
|
|
# but still very buggy. See:
|
|
# https://github.com/starship/starship/issues/5423 and
|
|
# https://github.com/nushell/nushell/issues/14650
|
|
# $env.PROMPT_INDICATOR_VI_INSERT = ": "
|
|
# $env.PROMPT_INDICATOR_VI_NORMAL = "〉"
|
|
$env.PROMPT_INDICATOR_VI_INSERT = ""
|
|
$env.PROMPT_INDICATOR_VI_NORMAL = ""
|
|
# Temporary workaround
|
|
$env.config.cursor_shape.vi_insert = "line"
|
|
$env.config.cursor_shape.vi_normal = "block"
|
|
# load starship prompt
|
|
mkdir ($nu.data-dir | path join "vendor/autoload")
|
|
starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu")
|
|
# load atuin history
|
|
atuin init nu | save -f ($nu.data-dir | path join "vendor/autoload/atuin.nu")
|
|
# load zoxide bookmarks
|
|
zoxide init nushell | save -f ($nu.data-dir | path join "vendor/autoload/zoxide.nu")
|
|
# load carapace completions
|
|
source ~/.cache/carapace/init.nu
|
|
|
|
# keybinds
|
|
$env.config.keybindings = [
|
|
{ modifier: control keycode: char_o mode: [emacs, vi_normal, vi_insert] event: null },
|
|
{
|
|
name: clear_screen
|
|
modifier: alt
|
|
keycode: char_l
|
|
mode: ["emacs", "vi_normal", "vi_insert"]
|
|
event: [
|
|
{edit: Clear}
|
|
{send: Enter}
|
|
]
|
|
}
|
|
{
|
|
name: insert_last_token
|
|
modifier: alt
|
|
keycode: char_.
|
|
mode: ["emacs", "vi_normal", "vi_insert"]
|
|
event: [
|
|
{ edit: InsertString, value: "!$" }
|
|
{ send: Enter }
|
|
]
|
|
}
|
|
{
|
|
name: open_editor
|
|
modifier: control
|
|
keycode: char_e
|
|
mode: ["emacs", "vi_normal", "vi_insert"]
|
|
event: {
|
|
send: OpenEditor
|
|
}
|
|
}
|
|
{
|
|
name: toggle_sudo
|
|
modifier: alt
|
|
keycode: char_s
|
|
mode: [emacs vi_insert vi_normal]
|
|
event: {
|
|
send: executehostcommand
|
|
cmd: "let cmd = (commandline); commandline edit (if $cmd starts-with sudo { $cmd | str replace -r '^sudo ' '' } else { 'sudo ' ++ $cmd });"
|
|
}
|
|
}
|
|
{
|
|
name: run_zoxide
|
|
modifier: alt
|
|
keycode: char_c
|
|
mode: ["emacs", "vi_normal", "vi_insert"]
|
|
event: {
|
|
send: executehostcommand
|
|
cmd: "zoxide query --interactive"
|
|
}
|
|
}
|
|
{
|
|
name: run_zoxide_vicmd
|
|
modifier: shift
|
|
keycode: char_c
|
|
mode: [ "vi_normal"]
|
|
event: {
|
|
send: executehostcommand
|
|
cmd: "zoxide query --interactive"
|
|
}
|
|
}
|
|
{
|
|
name: insert_file_fzf
|
|
modifier: control
|
|
keycode: char_t
|
|
mode: ["emacs", "vi_normal", "vi_insert"]
|
|
event: {
|
|
send: executehostcommand
|
|
cmd: "
|
|
let fzf_ctrl_t_command = \$\"fd --type file --hidden | fzf --preview 'bat --color=always --style=full --line-range=:500 {}' \";
|
|
let result = nu -l -i -c $fzf_ctrl_t_command;
|
|
commandline edit --append $result;
|
|
commandline set-cursor --end
|
|
"
|
|
}
|
|
}
|
|
]
|
|
|
|
alias l = ls
|
|
alias cl = clear
|
|
|
|
alias md = mkdir
|
|
def --env mcd [path: path] {
|
|
mkdir $path
|
|
cd $path
|
|
}
|
|
|
|
alias v = nvim
|