mirror of
https://github.com/Dichgrem/DCGOS.git
synced 2025-12-16 19:22:00 -05:00
feat:add_zsh
This commit is contained in:
821
dotfiles/.config/nushell/config.nu
vendored
821
dotfiles/.config/nushell/config.nu
vendored
@@ -1,821 +0,0 @@
|
|||||||
|
|
||||||
let dark_theme = {
|
|
||||||
separator: white
|
|
||||||
leading_trailing_space_bg: { attr: n }
|
|
||||||
header: green_bold
|
|
||||||
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
|
|
||||||
shape_garbage: { fg: white bg: red attr: b }
|
|
||||||
shape_glob_interpolation: cyan_bold
|
|
||||||
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
|
|
||||||
shape_raw_string: light_purple
|
|
||||||
}
|
|
||||||
|
|
||||||
let light_theme = {
|
|
||||||
separator: dark_gray
|
|
||||||
leading_trailing_space_bg: { attr: n }
|
|
||||||
header: green_bold
|
|
||||||
empty: blue
|
|
||||||
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
|
|
||||||
shape_garbage: { fg: white bg: red attr: b }
|
|
||||||
shape_glob_interpolation: cyan_bold
|
|
||||||
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
|
|
||||||
shape_raw_string: light_purple
|
|
||||||
}
|
|
||||||
$env.config = {
|
|
||||||
show_banner: false
|
|
||||||
|
|
||||||
ls: {
|
|
||||||
use_ls_colors: true
|
|
||||||
clickable_links: true
|
|
||||||
}
|
|
||||||
|
|
||||||
rm: {
|
|
||||||
always_trash: false
|
|
||||||
}
|
|
||||||
|
|
||||||
table: {
|
|
||||||
mode: rounded
|
|
||||||
index_mode: always
|
|
||||||
show_empty: true
|
|
||||||
padding: { left: 1, right: 1 }
|
|
||||||
trim: {
|
|
||||||
methodology: wrapping
|
|
||||||
wrapping_try_keep_words: true
|
|
||||||
truncating_suffix: "..."
|
|
||||||
}
|
|
||||||
header_on_separator: false
|
|
||||||
}
|
|
||||||
|
|
||||||
error_style: "fancy"
|
|
||||||
display_errors: {
|
|
||||||
exit_code: false
|
|
||||||
termination_signal: true
|
|
||||||
}
|
|
||||||
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: {}
|
|
||||||
},
|
|
||||||
selected_cell: { bg: light_blue },
|
|
||||||
}
|
|
||||||
|
|
||||||
history: {
|
|
||||||
max_size: 100_000
|
|
||||||
sync_on_enter: true
|
|
||||||
file_format: "plaintext"
|
|
||||||
isolation: false
|
|
||||||
}
|
|
||||||
|
|
||||||
completions: {
|
|
||||||
case_sensitive: false
|
|
||||||
quick: true
|
|
||||||
partial: true
|
|
||||||
algorithm: "prefix"
|
|
||||||
sort: "smart"
|
|
||||||
external: {
|
|
||||||
enable: true
|
|
||||||
max_results: 100
|
|
||||||
completer: null
|
|
||||||
}
|
|
||||||
use_ls_colors: true
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor_shape: {
|
|
||||||
emacs: line
|
|
||||||
vi_insert: block
|
|
||||||
vi_normal: underscore
|
|
||||||
}
|
|
||||||
|
|
||||||
color_config: $dark_theme
|
|
||||||
footer_mode: 25
|
|
||||||
float_precision: 2
|
|
||||||
buffer_editor: micro
|
|
||||||
use_ansi_coloring: true
|
|
||||||
bracketed_paste: true
|
|
||||||
edit_mode: emacs
|
|
||||||
shell_integration: {
|
|
||||||
osc2: true
|
|
||||||
osc7: true
|
|
||||||
osc8: true
|
|
||||||
osc9_9: false
|
|
||||||
osc133: true
|
|
||||||
osc633: true
|
|
||||||
reset_application_mode: true
|
|
||||||
}
|
|
||||||
render_right_prompt_on_last_line: false
|
|
||||||
use_kitty_protocol: false
|
|
||||||
highlight_resolved_externals: false
|
|
||||||
recursion_limit: 50
|
|
||||||
|
|
||||||
plugins: {}
|
|
||||||
|
|
||||||
plugin_gc: {
|
|
||||||
default: {
|
|
||||||
enabled: true
|
|
||||||
stop_after: 10sec
|
|
||||||
}
|
|
||||||
plugins: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hooks: {
|
|
||||||
pre_prompt: [{ null }]
|
|
||||||
pre_execution: [{ null }]
|
|
||||||
env_change: {
|
|
||||||
PWD: [{|before, after|
|
|
||||||
if (which direnv | is-empty) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
direnv export json | from json | default {} | load-env
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
display_output: "if (term size).columns >= 100 { table -e } else { table }"
|
|
||||||
command_not_found: { null }
|
|
||||||
}
|
|
||||||
|
|
||||||
menus: [
|
|
||||||
{
|
|
||||||
name: completion_menu
|
|
||||||
only_buffer_difference: false
|
|
||||||
marker: "| "
|
|
||||||
type: {
|
|
||||||
layout: columnar
|
|
||||||
columns: 4
|
|
||||||
col_width: 20
|
|
||||||
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,
|
|
||||||
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
|
|
||||||
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
|
|
||||||
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: completion_previous_menu
|
|
||||||
modifier: shift
|
|
||||||
keycode: backtab
|
|
||||||
mode: [emacs, vi_normal, vi_insert]
|
|
||||||
event: { send: menuprevious }
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name: ide_completion_menu
|
|
||||||
modifier: control
|
|
||||||
keycode: space
|
|
||||||
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: 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_down
|
|
||||||
modifier: control
|
|
||||||
keycode: char_n
|
|
||||||
mode: [emacs, vi_normal, vi_insert]
|
|
||||||
event: {
|
|
||||||
until: [
|
|
||||||
{ send: menudown }
|
|
||||||
{ send: down }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name: move_up
|
|
||||||
modifier: control
|
|
||||||
keycode: char_p
|
|
||||||
mode: [emacs, vi_normal, vi_insert]
|
|
||||||
event: {
|
|
||||||
until: [
|
|
||||||
{ send: menuup }
|
|
||||||
{ send: up }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
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: cuttolineend }
|
|
||||||
}
|
|
||||||
{
|
|
||||||
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 }
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name: copy_selection
|
|
||||||
modifier: control_shift
|
|
||||||
keycode: char_c
|
|
||||||
mode: emacs
|
|
||||||
event: { edit: copyselection }
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name: cut_selection
|
|
||||||
modifier: control_shift
|
|
||||||
keycode: char_x
|
|
||||||
mode: emacs
|
|
||||||
event: { edit: cutselection }
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name: select_all
|
|
||||||
modifier: control_shift
|
|
||||||
keycode: char_a
|
|
||||||
mode: emacs
|
|
||||||
event: { edit: selectall }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
mkdir ($nu.data-dir | path join "vendor/autoload")
|
|
||||||
atuin init nu | save -f ($nu.data-dir | path join "vendor/autoload/atuin.nu")
|
|
||||||
starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu")
|
|
||||||
zoxide init nushell | save -f ($nu.data-dir | path join "vendor/autoload/zoxide.nu")
|
|
||||||
57
dotfiles/.config/nushell/env.nu
vendored
57
dotfiles/.config/nushell/env.nu
vendored
@@ -1,57 +0,0 @@
|
|||||||
def create_left_prompt [] {
|
|
||||||
let dir = match (do --ignore-errors { $env.PWD | path relative-to $nu.home-path }) {
|
|
||||||
null => $env.PWD
|
|
||||||
'' => '~'
|
|
||||||
$relative_pwd => ([~ $relative_pwd] | path join)
|
|
||||||
}
|
|
||||||
|
|
||||||
let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold })
|
|
||||||
let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold })
|
|
||||||
let path_segment = $"($path_color)($dir)(ansi reset)"
|
|
||||||
|
|
||||||
$path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)"
|
|
||||||
}
|
|
||||||
|
|
||||||
def create_right_prompt [] {
|
|
||||||
let time_segment = ([
|
|
||||||
(ansi reset)
|
|
||||||
(ansi magenta)
|
|
||||||
(date now | format date '%x %X')
|
|
||||||
] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" |
|
|
||||||
str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}")
|
|
||||||
|
|
||||||
let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([
|
|
||||||
(ansi rb)
|
|
||||||
($env.LAST_EXIT_CODE)
|
|
||||||
] | str join)
|
|
||||||
} else { "" }
|
|
||||||
|
|
||||||
([$last_exit_code, (char space), $time_segment] | str join)
|
|
||||||
}
|
|
||||||
|
|
||||||
$env.PROMPT_COMMAND = {|| create_left_prompt }
|
|
||||||
$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt }
|
|
||||||
$env.PROMPT_INDICATOR = {|| "> " }
|
|
||||||
$env.PROMPT_INDICATOR_VI_INSERT = {|| ": " }
|
|
||||||
$env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " }
|
|
||||||
$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " }
|
|
||||||
|
|
||||||
$env.ENV_CONVERSIONS = {
|
|
||||||
"PATH": {
|
|
||||||
from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
|
|
||||||
to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
|
|
||||||
}
|
|
||||||
"Path": {
|
|
||||||
from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
|
|
||||||
to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$env.NU_LIB_DIRS = [
|
|
||||||
($nu.default-config-dir | path join 'scripts')
|
|
||||||
($nu.data-dir | path join 'completions')
|
|
||||||
]
|
|
||||||
|
|
||||||
$env.NU_PLUGIN_DIRS = [
|
|
||||||
($nu.default-config-dir | path join 'plugins')
|
|
||||||
]
|
|
||||||
5
home/cli/eza.nix
Normal file
5
home/cli/eza.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
eza
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
_: {
|
_: {
|
||||||
programs.fzf = {
|
programs.fzf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
_: {
|
|
||||||
programs.nushell = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
85
home/cli/zsh.nix
Normal file
85
home/cli/zsh.nix
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
dotDir = "${config.xdg.configHome}/zsh";
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "zsh-autosuggestions";
|
||||||
|
src = pkgs.zsh-autosuggestions;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "zsh-syntax-highlighting";
|
||||||
|
src = pkgs.zsh-syntax-highlighting;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fzf-tab";
|
||||||
|
src = pkgs.zsh-fzf-tab;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
initContent = ''
|
||||||
|
export LANG=zh_CN.UTF-8
|
||||||
|
export EDITOR=nano
|
||||||
|
|
||||||
|
# === History ===
|
||||||
|
HISTFILE=$XDG_STATE_HOME/zsh/history
|
||||||
|
HISTSIZE=10000
|
||||||
|
SAVEHIST=10000
|
||||||
|
setopt HIST_IGNORE_DUPS HIST_IGNORE_SPACE SHARE_HISTORY INC_APPEND_HISTORY
|
||||||
|
|
||||||
|
# === Tools ===
|
||||||
|
if command -v atuin >/dev/null 2>&1; then
|
||||||
|
eval "$(atuin init zsh)"
|
||||||
|
fi
|
||||||
|
if command -v zoxide >/dev/null 2>&1; then
|
||||||
|
eval "$(zoxide init zsh)"
|
||||||
|
fi
|
||||||
|
if command -v starship >/dev/null 2>&1; then
|
||||||
|
eval "$(starship init zsh)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# === Colors and Aliases ===
|
||||||
|
autoload -U colors && colors
|
||||||
|
alias ls='eza --icons=auto --group-directories-first'
|
||||||
|
alias ll='eza -lh --icons=auto --group-directories-first'
|
||||||
|
alias la='eza -lha --icons=auto --group-directories-first'
|
||||||
|
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
alias ..='cd ..'
|
||||||
|
alias ...='cd ../..'
|
||||||
|
|
||||||
|
# === Completion ===
|
||||||
|
autoload -Uz compinit
|
||||||
|
mkdir -p ~/.cache/zsh
|
||||||
|
compinit -d ~/.cache/zsh/zcompdump
|
||||||
|
setopt CORRECT
|
||||||
|
|
||||||
|
# === Load plugins manually ===
|
||||||
|
if [[ -o interactive ]]; then
|
||||||
|
source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||||
|
source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
|
source ${pkgs.zsh-fzf-tab}/share/fzf-tab/fzf-tab.plugin.zsh
|
||||||
|
|
||||||
|
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
|
||||||
|
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
||||||
|
|
||||||
|
bindkey -e
|
||||||
|
bindkey "$(tput kcuf1)" autosuggest-accept
|
||||||
|
fi
|
||||||
|
|
||||||
|
# === Prompt ===
|
||||||
|
if ! command -v starship >/dev/null 2>&1; then
|
||||||
|
PROMPT='%F{green}%n@%m%f:%F{blue}%~%f %# '
|
||||||
|
RPROMPT='%F{yellow}[%D{%H:%M}]%f'
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
homeMode = "755";
|
homeMode = "755";
|
||||||
ignoreShellProgramCheck = true;
|
ignoreShellProgramCheck = true;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = pkgs.nushell;
|
shell = pkgs.zsh;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
homeMode = "755";
|
homeMode = "755";
|
||||||
ignoreShellProgramCheck = true;
|
ignoreShellProgramCheck = true;
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = pkgs.nushell;
|
shell = pkgs.zsh;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user