1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453
| # Nushell Config File # # version = "0.87.1"
# 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_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: auto # "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 } }
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
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: cyan selected_text: cyan_reverse description_text: lc } } { 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: 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: 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_end_or_take_history_hint modifier: none keycode: end mode: [emacs, vi_normal, vi_insert] event: { until: [ {send: historyhintcomplete} {edit: movetolineend} ] } } { 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: newline_or_run_command modifier: none keycode: enter mode: emacs event: {send: enter} } ] }
alias l = ls source ~/.cache/carapace/init.nu use ~/.cache/starship/init.nu
|