add jump to path function

This commit is contained in:
2026-04-05 19:39:24 +08:00
parent 09f60a85ef
commit 346ef7b7cb
+31 -7
View File
@@ -894,7 +894,7 @@ do_help() {
bw=$((COLS - 4)) bw=$((COLS - 4))
[ "$bw" -gt 52 ] && bw=52 [ "$bw" -gt 52 ] && bw=52
[ "$bw" -lt 36 ] && bw=36 [ "$bw" -lt 36 ] && bw=36
bh=44 bh=45
_help_bx=$(( (COLS - bw) / 2 )); [ "$_help_bx" -lt 1 ] && _help_bx=1 _help_bx=$(( (COLS - bw) / 2 )); [ "$_help_bx" -lt 1 ] && _help_bx=1
_help_by=$(( (ROWS - bh) / 2 )); [ "$_help_by" -lt 1 ] && _help_by=1 _help_by=$(( (ROWS - bh) / 2 )); [ "$_help_by" -lt 1 ] && _help_by=1
_help_iw=$((bw - 2)) _help_iw=$((bw - 2))
@@ -940,11 +940,12 @@ do_help() {
help_row 35 " c copy path to clipboard" help_row 35 " c copy path to clipboard"
help_row 36 " ~ go to home directory" help_row 36 " ~ go to home directory"
help_row 37 " \` jump to previous directory" help_row 37 " \` jump to previous directory"
help_sep 38 help_row 38 " : jump to path"
help_row 39 " q quit" help_sep 39
help_row 40 " ? this help" help_row 40 " q quit"
help_row 41 "" help_row 41 " ? this help"
help_row 42 " press any key to close..." help_row 42 ""
help_row 43 " press any key to close..."
goto "$(( _help_by + bh ))" "$_help_bx" goto "$(( _help_by + bh ))" "$_help_bx"
printf '%s+%s+%s' "${BOLD}${CYAN}" "$_help_hl" "${RESET}" printf '%s+%s+%s' "${BOLD}${CYAN}" "$_help_hl" "${RESET}"
@@ -1025,6 +1026,29 @@ do_toggle_preview() {
NEED_FULL_REDRAW=1 NEED_FULL_REDRAW=1
} }
do_jump_path() {
goto "$(term_rows)" 1
printf '%s%s jump to: %s' "${ERASE_LINE}" "${CYAN}${BOLD}" "${RESET}"
if read_line && [ -n "$READ_LINE" ]; then
# expand ~ manually
case "$READ_LINE" in
"~"*) READ_LINE="${HOME}${READ_LINE#\~}" ;;
esac
if [ -d "$READ_LINE" ]; then
PREV_CWD="$CWD"
CWD="$READ_LINE"; norm_cwd
FILTER=""; SELECTED=""
SEL=0; OFFSET=0; PREV_SEL=0; PREV_OFFSET=0
load_entries
else
INFO_MSG="not found: ${READ_LINE}"
NEED_FULL_REDRAW=1; draw
fi
else
NEED_FULL_REDRAW=1; draw
fi
}
do_go_back() { do_go_back() {
[ "$CWD" = "/" ] && return [ "$CWD" = "/" ] && return
FILTER="" FILTER=""
@@ -1558,7 +1582,7 @@ while true; do
s) do_sort ;; s) do_sort ;;
u) do_trash ;; u) do_trash ;;
U) do_open_trash ;; U) do_open_trash ;;
'`') do_jump_back ;; ':') do_jump_path ;;
'~') PREV_CWD="$CWD"; CWD=$(cd "$HOME" && pwd); FILTER=""; SELECTED="" '~') PREV_CWD="$CWD"; CWD=$(cd "$HOME" && pwd); FILTER=""; SELECTED=""
SEL=0; OFFSET=0; PREV_SEL=0; PREV_OFFSET=0; load_entries ;; SEL=0; OFFSET=0; PREV_SEL=0; PREV_OFFSET=0; load_entries ;;
c) do_copy_path ;; c) do_copy_path ;;