877 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			877 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # Nushell Config File
 | |
| #
 | |
| # version = "0.92.2"
 | |
| 
 | |
| # For more information on defining custom themes, see
 | |
| # https://www.nushell.sh/book/coloring_and_theming.html
 | |
| # And here is the theme collection
 | |
| # https://github.com/nushell/nu_scripts/tree/main/themes
 | |
| let dark_theme = {
 | |
|     # color for nushell primitives
 | |
|     separator: white
 | |
|     leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off
 | |
|     header: green_bold
 | |
|     empty: blue
 | |
|     # Closures can be used to choose colors for specific values.
 | |
|     # The value (in this case, a bool) is piped into the closure.
 | |
|     # eg) {|| if $in { 'light_cyan' } else { 'light_gray' } }
 | |
|     bool: light_cyan
 | |
|     int: white
 | |
|     filesize: cyan
 | |
|     duration: white
 | |
|     date: purple
 | |
|     range: white
 | |
|     float: white
 | |
|     string: white
 | |
|     nothing: white
 | |
|     binary: white
 | |
|     cell-path: white
 | |
|     row_index: green_bold
 | |
|     record: white
 | |
|     list: white
 | |
|     block: white
 | |
|     hints: dark_gray
 | |
|     search_result: { bg: red fg: white }
 | |
|     shape_and: purple_bold
 | |
|     shape_binary: purple_bold
 | |
|     shape_block: blue_bold
 | |
|     shape_bool: light_cyan
 | |
|     shape_closure: green_bold
 | |
|     shape_custom: green
 | |
|     shape_datetime: cyan_bold
 | |
|     shape_directory: cyan
 | |
|     shape_external: cyan
 | |
|     shape_externalarg: green_bold
 | |
|     shape_external_resolved: light_yellow_bold
 | |
|     shape_filepath: cyan
 | |
|     shape_flag: blue_bold
 | |
|     shape_float: purple_bold
 | |
|     # shapes are used to change the cli syntax highlighting
 | |
|     shape_garbage: { fg: white bg: red attr: b}
 | |
|     shape_globpattern: cyan_bold
 | |
|     shape_int: purple_bold
 | |
|     shape_internalcall: cyan_bold
 | |
|     shape_keyword: cyan_bold
 | |
|     shape_list: cyan_bold
 | |
|     shape_literal: blue
 | |
|     shape_match_pattern: green
 | |
|     shape_matching_brackets: { attr: u }
 | |
|     shape_nothing: light_cyan
 | |
|     shape_operator: yellow
 | |
|     shape_or: purple_bold
 | |
|     shape_pipe: purple_bold
 | |
|     shape_range: yellow_bold
 | |
|     shape_record: cyan_bold
 | |
|     shape_redirection: purple_bold
 | |
|     shape_signature: green_bold
 | |
|     shape_string: green
 | |
|     shape_string_interpolation: cyan_bold
 | |
|     shape_table: blue_bold
 | |
|     shape_variable: purple
 | |
|     shape_vardecl: purple
 | |
| }
 | |
| 
 | |
| let light_theme = {
 | |
|     # color for nushell primitives
 | |
|     separator: dark_gray
 | |
|     leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off
 | |
|     header: green_bold
 | |
|     empty: blue
 | |
|     # Closures can be used to choose colors for specific values.
 | |
|     # The value (in this case, a bool) is piped into the closure.
 | |
|     # eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } }
 | |
|     bool: dark_cyan
 | |
|     int: dark_gray
 | |
|     filesize: cyan_bold
 | |
|     duration: dark_gray
 | |
|     date: purple
 | |
|     range: dark_gray
 | |
|     float: dark_gray
 | |
|     string: dark_gray
 | |
|     nothing: dark_gray
 | |
|     binary: dark_gray
 | |
|     cell-path: dark_gray
 | |
|     row_index: green_bold
 | |
|     record: dark_gray
 | |
|     list: dark_gray
 | |
|     block: dark_gray
 | |
|     hints: dark_gray
 | |
|     search_result: { fg: white bg: red }
 | |
|     shape_and: purple_bold
 | |
|     shape_binary: purple_bold
 | |
|     shape_block: blue_bold
 | |
|     shape_bool: light_cyan
 | |
|     shape_closure: green_bold
 | |
|     shape_custom: green
 | |
|     shape_datetime: cyan_bold
 | |
|     shape_directory: cyan
 | |
|     shape_external: cyan
 | |
|     shape_externalarg: green_bold
 | |
|     shape_external_resolved: light_purple_bold
 | |
|     shape_filepath: cyan
 | |
|     shape_flag: blue_bold
 | |
|     shape_float: purple_bold
 | |
|     # shapes are used to change the cli syntax highlighting
 | |
|     shape_garbage: { fg: white bg: red attr: b}
 | |
|     shape_globpattern: cyan_bold
 | |
|     shape_int: purple_bold
 | |
|     shape_internalcall: cyan_bold
 | |
|     shape_keyword: cyan_bold
 | |
|     shape_list: cyan_bold
 | |
|     shape_literal: blue
 | |
|     shape_match_pattern: green
 | |
|     shape_matching_brackets: { attr: u }
 | |
|     shape_nothing: light_cyan
 | |
|     shape_operator: yellow
 | |
|     shape_or: purple_bold
 | |
|     shape_pipe: purple_bold
 | |
|     shape_range: yellow_bold
 | |
|     shape_record: cyan_bold
 | |
|     shape_redirection: purple_bold
 | |
|     shape_signature: green_bold
 | |
|     shape_string: green
 | |
|     shape_string_interpolation: cyan_bold
 | |
|     shape_table: blue_bold
 | |
|     shape_variable: purple
 | |
|     shape_vardecl: purple
 | |
| }
 | |
| 
 | |
| # External completer example
 | |
| # let carapace_completer = {|spans|
 | |
| #     carapace $spans.0 nushell ...$spans | from json
 | |
| # }
 | |
| 
 | |
| # The default config record. This is where much of your global configuration is setup.
 | |
| $env.config = {
 | |
|     show_banner: false # true or false to enable or disable the welcome banner at startup
 | |
| 
 | |
|     ls: {
 | |
|         use_ls_colors: true # use the LS_COLORS environment variable to colorize output
 | |
|         clickable_links: true # enable or disable clickable links. Your terminal has to support links.
 | |
|     }
 | |
| 
 | |
|     rm: {
 | |
|         always_trash: false # always act as if -t was given. Can be overridden with -p
 | |
|     }
 | |
| 
 | |
|     table: {
 | |
|         mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other
 | |
|         index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column
 | |
|         show_empty: true # show 'empty list' and 'empty record' placeholders for command output
 | |
|         padding: { left: 1, right: 1 } # a left right padding of each column in a table
 | |
|         trim: {
 | |
|             methodology: wrapping # wrapping or truncating
 | |
|             wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology
 | |
|             truncating_suffix: "..." # A suffix used by the 'truncating' methodology
 | |
|         }
 | |
|         header_on_separator: false # show header text on separator/border line
 | |
|         # abbreviated_row_count: 10 # limit data rows from top and bottom after reaching a set point
 | |
|     }
 | |
| 
 | |
|     error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages
 | |
| 
 | |
|     # datetime_format determines what a datetime rendered in the shell would look like.
 | |
|     # Behavior without this configuration point will be to "humanize" the datetime display,
 | |
|     # showing something like "a day ago."
 | |
|     datetime_format: {
 | |
|         # normal: '%a, %d %b %Y %H:%M:%S %z'    # shows up in displays of variables or other datetime's outside of tables
 | |
|         # table: '%m/%d/%y %I:%M:%S%p'          # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format
 | |
|     }
 | |
| 
 | |
|     explore: {
 | |
|         status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" },
 | |
|         command_bar_text: { fg: "#C4C9C6" },
 | |
|         highlight: { fg: "black", bg: "yellow" },
 | |
|         status: {
 | |
|             error: { fg: "white", bg: "red" },
 | |
|             warn: {}
 | |
|             info: {}
 | |
|         },
 | |
|         table: {
 | |
|             split_line: { fg: "#404040" },
 | |
|             selected_cell: { bg: light_blue },
 | |
|             selected_row: {},
 | |
|             selected_column: {},
 | |
|         },
 | |
|     }
 | |
| 
 | |
|     history: {
 | |
|         max_size: 100_000 # Session has to be reloaded for this to take effect
 | |
|         sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file
 | |
|         file_format: "plaintext" # "sqlite" or "plaintext"
 | |
|         isolation: false # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions.
 | |
|     }
 | |
| 
 | |
|     completions: {
 | |
|         case_sensitive: false # set to true to enable case-sensitive completions
 | |
|         quick: true    # set this to false to prevent auto-selecting completions when only one remains
 | |
|         partial: true    # set this to false to prevent partial filling of the prompt
 | |
|         algorithm: "prefix"    # prefix or fuzzy
 | |
|         external: {
 | |
|             enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow
 | |
|             max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options
 | |
|             completer: null # check 'carapace_completer' above as an example
 | |
|         }
 | |
|         use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS
 | |
|     }
 | |
| 
 | |
|     filesize: {
 | |
|         metric: false # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
 | |
|         format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto
 | |
|     }
 | |
| 
 | |
|     cursor_shape: {
 | |
|         emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default)
 | |
|         vi_insert: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default)
 | |
|         vi_normal: underscore # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default)
 | |
|     }
 | |
| 
 | |
|     color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record
 | |
|     use_grid_icons: true
 | |
|     footer_mode: "25" # always, never, number_of_rows, auto
 | |
|     float_precision: 2 # the precision for displaying floats in tables
 | |
|     buffer_editor: "" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
 | |
|     use_ansi_coloring: true
 | |
|     bracketed_paste: true # enable bracketed paste, currently useless on windows
 | |
|     edit_mode: emacs # emacs, vi
 | |
|     shell_integration: false # enables terminal shell integration. Off by default, as some terminals have issues with this.
 | |
|     render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
 | |
|     use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this.
 | |
|     highlight_resolved_externals: false # true enables highlighting of external commands in the repl resolved by which.
 | |
|     recursion_limit: 50 # the maximum number of times nushell allows recursion before stopping it
 | |
| 
 | |
|     plugins: {} # Per-plugin configuration. See https://www.nushell.sh/contributor-book/plugins.html#configuration.
 | |
| 
 | |
|     plugin_gc: {
 | |
|         # Configuration for plugin garbage collection
 | |
|         default: {
 | |
|             enabled: true # true to enable stopping of inactive plugins
 | |
|             stop_after: 10sec # how long to wait after a plugin is inactive to stop it
 | |
|         }
 | |
|         plugins: {
 | |
|             # alternate configuration for specific plugins, by name, for example:
 | |
|             #
 | |
|             # gstat: {
 | |
|             #     enabled: false
 | |
|             # }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     hooks: {
 | |
|         pre_prompt: [{ null }] # run before the prompt is shown
 | |
|         pre_execution: [{ null }] # run before the repl input is run
 | |
|         env_change: {
 | |
|             PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input
 | |
|         }
 | |
|         display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline
 | |
|         command_not_found: { null } # return an error message when a command is not found
 | |
|     }
 | |
| 
 | |
|     menus: [
 | |
|         # Configuration for default nushell menus
 | |
|         # Note the lack of source parameter
 | |
|         {
 | |
|             name: completion_menu
 | |
|             only_buffer_difference: false
 | |
|             marker: "| "
 | |
|             type: {
 | |
|                 layout: columnar
 | |
|                 columns: 4
 | |
|                 col_width: 20     # Optional value. If missing all the screen width is used to calculate column width
 | |
|                 col_padding: 2
 | |
|             }
 | |
|             style: {
 | |
|                 text: green
 | |
|                 selected_text: { attr: r }
 | |
|                 description_text: yellow
 | |
|                 match_text: { attr: u }
 | |
|                 selected_match_text: { attr: ur }
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: ide_completion_menu
 | |
|             only_buffer_difference: false
 | |
|             marker: "| "
 | |
|             type: {
 | |
|                 layout: ide
 | |
|                 min_completion_width: 0,
 | |
|                 max_completion_width: 50,
 | |
|                 max_completion_height: 10, # will be limited by the available lines in the terminal
 | |
|                 padding: 0,
 | |
|                 border: true,
 | |
|                 cursor_offset: 0,
 | |
|                 description_mode: "prefer_right"
 | |
|                 min_description_width: 0
 | |
|                 max_description_width: 50
 | |
|                 max_description_height: 10
 | |
|                 description_offset: 1
 | |
|                 # If true, the cursor pos will be corrected, so the suggestions match up with the typed text
 | |
|                 #
 | |
|                 # C:\> str
 | |
|                 #      str join
 | |
|                 #      str trim
 | |
|                 #      str split
 | |
|                 correct_cursor_pos: false
 | |
|             }
 | |
|             style: {
 | |
|                 text: green
 | |
|                 selected_text: { attr: r }
 | |
|                 description_text: yellow
 | |
|                 match_text: { attr: u }
 | |
|                 selected_match_text: { attr: ur }
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: history_menu
 | |
|             only_buffer_difference: true
 | |
|             marker: "? "
 | |
|             type: {
 | |
|                 layout: list
 | |
|                 page_size: 10
 | |
|             }
 | |
|             style: {
 | |
|                 text: green
 | |
|                 selected_text: green_reverse
 | |
|                 description_text: yellow
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: help_menu
 | |
|             only_buffer_difference: true
 | |
|             marker: "? "
 | |
|             type: {
 | |
|                 layout: description
 | |
|                 columns: 4
 | |
|                 col_width: 20     # Optional value. If missing all the screen width is used to calculate column width
 | |
|                 col_padding: 2
 | |
|                 selection_rows: 4
 | |
|                 description_rows: 10
 | |
|             }
 | |
|             style: {
 | |
|                 text: green
 | |
|                 selected_text: green_reverse
 | |
|                 description_text: yellow
 | |
|             }
 | |
|         }
 | |
|     ]
 | |
| 
 | |
|     keybindings: [
 | |
|         {
 | |
|             name: completion_menu
 | |
|             modifier: none
 | |
|             keycode: tab
 | |
|             mode: [emacs vi_normal vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menu name: completion_menu }
 | |
|                     { send: menunext }
 | |
|                     { edit: complete }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: ide_completion_menu
 | |
|             modifier: control
 | |
|             keycode: char_n
 | |
|             mode: [emacs vi_normal vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menu name: ide_completion_menu }
 | |
|                     { send: menunext }
 | |
|                     { edit: complete }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: history_menu
 | |
|             modifier: control
 | |
|             keycode: char_r
 | |
|             mode: [emacs, vi_insert, vi_normal]
 | |
|             event: { send: menu name: history_menu }
 | |
|         }
 | |
|         {
 | |
|             name: help_menu
 | |
|             modifier: none
 | |
|             keycode: f1
 | |
|             mode: [emacs, vi_insert, vi_normal]
 | |
|             event: { send: menu name: help_menu }
 | |
|         }
 | |
|         {
 | |
|             name: completion_previous_menu
 | |
|             modifier: shift
 | |
|             keycode: backtab
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { send: menuprevious }
 | |
|         }
 | |
|         {
 | |
|             name: next_page_menu
 | |
|             modifier: control
 | |
|             keycode: char_x
 | |
|             mode: emacs
 | |
|             event: { send: menupagenext }
 | |
|         }
 | |
|         {
 | |
|             name: undo_or_previous_page_menu
 | |
|             modifier: control
 | |
|             keycode: char_z
 | |
|             mode: emacs
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menupageprevious }
 | |
|                     { edit: undo }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: escape
 | |
|             modifier: none
 | |
|             keycode: escape
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { send: esc }    # NOTE: does not appear to work
 | |
|         }
 | |
|         {
 | |
|             name: cancel_command
 | |
|             modifier: control
 | |
|             keycode: char_c
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { send: ctrlc }
 | |
|         }
 | |
|         {
 | |
|             name: quit_shell
 | |
|             modifier: control
 | |
|             keycode: char_d
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { send: ctrld }
 | |
|         }
 | |
|         {
 | |
|             name: clear_screen
 | |
|             modifier: control
 | |
|             keycode: char_l
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { send: clearscreen }
 | |
|         }
 | |
|         {
 | |
|             name: search_history
 | |
|             modifier: control
 | |
|             keycode: char_q
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { send: searchhistory }
 | |
|         }
 | |
|         {
 | |
|             name: open_command_editor
 | |
|             modifier: control
 | |
|             keycode: char_o
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { send: openeditor }
 | |
|         }
 | |
|         {
 | |
|             name: move_up
 | |
|             modifier: none
 | |
|             keycode: up
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menuup }
 | |
|                     { send: up }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_down
 | |
|             modifier: none
 | |
|             keycode: down
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menudown }
 | |
|                     { send: down }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_left
 | |
|             modifier: none
 | |
|             keycode: left
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menuleft }
 | |
|                     { send: left }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_right_or_take_history_hint
 | |
|             modifier: none
 | |
|             keycode: right
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: historyhintcomplete }
 | |
|                     { send: menuright }
 | |
|                     { send: right }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_one_word_left
 | |
|             modifier: control
 | |
|             keycode: left
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { edit: movewordleft }
 | |
|         }
 | |
|         {
 | |
|             name: move_one_word_right_or_take_history_hint
 | |
|             modifier: control
 | |
|             keycode: right
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: historyhintwordcomplete }
 | |
|                     { edit: movewordright }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_to_line_start
 | |
|             modifier: none
 | |
|             keycode: home
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { edit: movetolinestart }
 | |
|         }
 | |
|         {
 | |
|             name: move_to_line_start
 | |
|             modifier: control
 | |
|             keycode: char_a
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { edit: movetolinestart }
 | |
|         }
 | |
|         {
 | |
|             name: move_to_line_end_or_take_history_hint
 | |
|             modifier: none
 | |
|             keycode: end
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: historyhintcomplete }
 | |
|                     { edit: movetolineend }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_to_line_end_or_take_history_hint
 | |
|             modifier: control
 | |
|             keycode: char_e
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: historyhintcomplete }
 | |
|                     { edit: movetolineend }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_to_line_start
 | |
|             modifier: control
 | |
|             keycode: home
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { edit: movetolinestart }
 | |
|         }
 | |
|         {
 | |
|             name: move_to_line_end
 | |
|             modifier: control
 | |
|             keycode: end
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: { edit: movetolineend }
 | |
|         }
 | |
|         {
 | |
|             name: move_up
 | |
|             modifier: control
 | |
|             keycode: char_p
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menuup }
 | |
|                     { send: up }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_down
 | |
|             modifier: control
 | |
|             keycode: char_t
 | |
|             mode: [emacs, vi_normal, vi_insert]
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menudown }
 | |
|                     { send: down }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_character_backward
 | |
|             modifier: none
 | |
|             keycode: backspace
 | |
|             mode: [emacs, vi_insert]
 | |
|             event: { edit: backspace }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_word_backward
 | |
|             modifier: control
 | |
|             keycode: backspace
 | |
|             mode: [emacs, vi_insert]
 | |
|             event: { edit: backspaceword }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_character_forward
 | |
|             modifier: none
 | |
|             keycode: delete
 | |
|             mode: [emacs, vi_insert]
 | |
|             event: { edit: delete }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_character_forward
 | |
|             modifier: control
 | |
|             keycode: delete
 | |
|             mode: [emacs, vi_insert]
 | |
|             event: { edit: delete }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_character_backward
 | |
|             modifier: control
 | |
|             keycode: char_h
 | |
|             mode: [emacs, vi_insert]
 | |
|             event: { edit: backspace }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_word_backward
 | |
|             modifier: control
 | |
|             keycode: char_w
 | |
|             mode: [emacs, vi_insert]
 | |
|             event: { edit: backspaceword }
 | |
|         }
 | |
|         {
 | |
|             name: move_left
 | |
|             modifier: none
 | |
|             keycode: backspace
 | |
|             mode: vi_normal
 | |
|             event: { edit: moveleft }
 | |
|         }
 | |
|         {
 | |
|             name: newline_or_run_command
 | |
|             modifier: none
 | |
|             keycode: enter
 | |
|             mode: emacs
 | |
|             event: { send: enter }
 | |
|         }
 | |
|         {
 | |
|             name: move_left
 | |
|             modifier: control
 | |
|             keycode: char_b
 | |
|             mode: emacs
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: menuleft }
 | |
|                     { send: left }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_right_or_take_history_hint
 | |
|             modifier: control
 | |
|             keycode: char_f
 | |
|             mode: emacs
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: historyhintcomplete }
 | |
|                     { send: menuright }
 | |
|                     { send: right }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: redo_change
 | |
|             modifier: control
 | |
|             keycode: char_g
 | |
|             mode: emacs
 | |
|             event: { edit: redo }
 | |
|         }
 | |
|         {
 | |
|             name: undo_change
 | |
|             modifier: control
 | |
|             keycode: char_z
 | |
|             mode: emacs
 | |
|             event: { edit: undo }
 | |
|         }
 | |
|         {
 | |
|             name: paste_before
 | |
|             modifier: control
 | |
|             keycode: char_y
 | |
|             mode: emacs
 | |
|             event: { edit: pastecutbufferbefore }
 | |
|         }
 | |
|         {
 | |
|             name: cut_word_left
 | |
|             modifier: control
 | |
|             keycode: char_w
 | |
|             mode: emacs
 | |
|             event: { edit: cutwordleft }
 | |
|         }
 | |
|         {
 | |
|             name: cut_line_to_end
 | |
|             modifier: control
 | |
|             keycode: char_k
 | |
|             mode: emacs
 | |
|             event: { edit: cuttoend }
 | |
|         }
 | |
|         {
 | |
|             name: cut_line_from_start
 | |
|             modifier: control
 | |
|             keycode: char_u
 | |
|             mode: emacs
 | |
|             event: { edit: cutfromstart }
 | |
|         }
 | |
|         {
 | |
|             name: swap_graphemes
 | |
|             modifier: control
 | |
|             keycode: char_t
 | |
|             mode: emacs
 | |
|             event: { edit: swapgraphemes }
 | |
|         }
 | |
|         {
 | |
|             name: move_one_word_left
 | |
|             modifier: alt
 | |
|             keycode: left
 | |
|             mode: emacs
 | |
|             event: { edit: movewordleft }
 | |
|         }
 | |
|         {
 | |
|             name: move_one_word_right_or_take_history_hint
 | |
|             modifier: alt
 | |
|             keycode: right
 | |
|             mode: emacs
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: historyhintwordcomplete }
 | |
|                     { edit: movewordright }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: move_one_word_left
 | |
|             modifier: alt
 | |
|             keycode: char_b
 | |
|             mode: emacs
 | |
|             event: { edit: movewordleft }
 | |
|         }
 | |
|         {
 | |
|             name: move_one_word_right_or_take_history_hint
 | |
|             modifier: alt
 | |
|             keycode: char_f
 | |
|             mode: emacs
 | |
|             event: {
 | |
|                 until: [
 | |
|                     { send: historyhintwordcomplete }
 | |
|                     { edit: movewordright }
 | |
|                 ]
 | |
|             }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_word_forward
 | |
|             modifier: alt
 | |
|             keycode: delete
 | |
|             mode: emacs
 | |
|             event: { edit: deleteword }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_word_backward
 | |
|             modifier: alt
 | |
|             keycode: backspace
 | |
|             mode: emacs
 | |
|             event: { edit: backspaceword }
 | |
|         }
 | |
|         {
 | |
|             name: delete_one_word_backward
 | |
|             modifier: alt
 | |
|             keycode: char_m
 | |
|             mode: emacs
 | |
|             event: { edit: backspaceword }
 | |
|         }
 | |
|         {
 | |
|             name: cut_word_to_right
 | |
|             modifier: alt
 | |
|             keycode: char_d
 | |
|             mode: emacs
 | |
|             event: { edit: cutwordright }
 | |
|         }
 | |
|         {
 | |
|             name: upper_case_word
 | |
|             modifier: alt
 | |
|             keycode: char_u
 | |
|             mode: emacs
 | |
|             event: { edit: uppercaseword }
 | |
|         }
 | |
|         {
 | |
|             name: lower_case_word
 | |
|             modifier: alt
 | |
|             keycode: char_l
 | |
|             mode: emacs
 | |
|             event: { edit: lowercaseword }
 | |
|         }
 | |
|         {
 | |
|             name: capitalize_char
 | |
|             modifier: alt
 | |
|             keycode: char_c
 | |
|             mode: emacs
 | |
|             event: { edit: capitalizechar }
 | |
|         }
 | |
|         # The following bindings with `*system` events require that Nushell has
 | |
|         # been compiled with the `system-clipboard` feature.
 | |
|         # This should be the case for Windows, macOS, and most Linux distributions
 | |
|         # Not available for example on Android (termux)
 | |
|         # If you want to use the system clipboard for visual selection or to
 | |
|         # paste directly, uncomment the respective lines and replace the version
 | |
|         # using the internal clipboard.
 | |
|         {
 | |
|             name: copy_selection
 | |
|             modifier: control_shift
 | |
|             keycode: char_c
 | |
|             mode: emacs
 | |
|             event: { edit: copyselection }
 | |
|             # event: { edit: copyselectionsystem }
 | |
|         }
 | |
|         {
 | |
|             name: cut_selection
 | |
|             modifier: control_shift
 | |
|             keycode: char_x
 | |
|             mode: emacs
 | |
|             event: { edit: cutselection }
 | |
|             # event: { edit: cutselectionsystem }
 | |
|         }
 | |
|         # {
 | |
|         #     name: paste_system
 | |
|         #     modifier: control_shift
 | |
|         #     keycode: char_v
 | |
|         #     mode: emacs
 | |
|         #     event: { edit: pastesystem }
 | |
|         # }
 | |
|         {
 | |
|             name: select_all
 | |
|             modifier: control_shift
 | |
|             keycode: char_a
 | |
|             mode: emacs
 | |
|             event: { edit: selectall }
 | |
|         }
 | |
|     ]
 | |
| }
 | |
| 
 | |
| # Unix
 | |
| alias ll = ls -la
 | |
| alias ln = ln -v
 | |
| 
 | |
| # nvim
 | |
| alias vim = micro
 | |
| alias vi = micro
 | |
| 
 | |
| 
 | |
| use ~/.cache/starship/init.nu
 | 
