mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-11 09:37:31 +08:00
108 lines
2.1 KiB
Fish
108 lines
2.1 KiB
Fish
|
|
#
|
|
# Print the current working directory in a shortened form. This
|
|
# function is used by the default prompt command.
|
|
#
|
|
|
|
if test (uname) = Darwin
|
|
function prompt_pwd -d "Print the current working directory, shortend to fit the prompt"
|
|
if test "$PWD" != "$HOME"
|
|
printf "%s" (echo $PWD|sed -e 's|/private||' -e "s|^$HOME|~|" -e 's-/\([^/]\)\([^/]*\)-/\1-g')
|
|
echo $PWD|sed -e 's-.*/[^/]\([^/]*$\)-\1-'
|
|
else
|
|
echo '~'
|
|
end
|
|
end
|
|
else
|
|
function prompt_pwd -d "Print the current working directory, shortend to fit the prompt"
|
|
if test "$PWD" != "$HOME"
|
|
printf "%s" (echo $PWD|sed -e "s|^$HOME|~|" -e 's-/\([^/]\)\([^/]*\)-/\1-g')
|
|
echo $PWD|sed -e 's-.*/[^/]\([^/]*$\)-\1-'
|
|
else
|
|
echo '~'
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
#
|
|
# This function is bound to Alt-L, it is used to list the contents of
|
|
# the directory under the cursor
|
|
#
|
|
|
|
function __fish_list_current_token -d "List contents of token under the cursor if it is a directory, otherwise list the contents of the current directory"
|
|
set val (eval echo (commandline -t))
|
|
if test -d $val
|
|
ls $val
|
|
else
|
|
set dir (dirname $val)
|
|
if test $dir != . -a -d $dir
|
|
ls $dir
|
|
else
|
|
ls
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
function pushd -d "Push directory to stack"
|
|
# Comment to avoid set completions
|
|
set -g dirstack (command pwd) $dirstack
|
|
cd $argv[1]
|
|
end
|
|
|
|
|
|
function popd -d "Pop dir from stack"
|
|
if test $dirstack[1]
|
|
cd $dirstack[1]
|
|
else
|
|
printf (_ "%s: Directory stack is empty...") popd
|
|
return 1
|
|
end
|
|
|
|
set -e dirstack[1]
|
|
|
|
end
|
|
|
|
|
|
function dirs -d "Print directory stack"
|
|
echo -n (command pwd)" "
|
|
for i in $dirstack
|
|
echo -n $i" "
|
|
end
|
|
echo
|
|
end
|
|
|
|
|
|
function prevd-or-backward-word --key-binding
|
|
if test -z (commandline)
|
|
prevd
|
|
else
|
|
commandline -f backward-word
|
|
end
|
|
end
|
|
|
|
function nextd-or-forward-word --key-binding
|
|
if test -z (commandline)
|
|
nextd
|
|
else
|
|
commandline -f forward-word
|
|
end
|
|
end
|
|
|
|
#
|
|
# This function deletes a character from the commandline if it is
|
|
# non-empty, and exits the shell otherwise. Implementing this
|
|
# functionality has been a longstanding request from various
|
|
# fish-users.
|
|
#
|
|
|
|
function delete-or-exit --key-binding
|
|
if test (commandline)
|
|
commandline -f delete-char
|
|
else
|
|
exit
|
|
end
|
|
end
|
|
|