Significant Changes
-
Command substitutions now modify
$status
#547.
Previously the exit status of command substitutions (like(pwd)
) was ignored; however now it modifies $status. Furthermore, theset
command now only sets $status on failure; it is untouched on success. This allows for the following pattern:if set python_path (which python) ... end
Because set does not modify $status on success, the if branch effectively tests whether
which
succeeded, and if so, whether theset
also succeeded. -
Improvements to $PATH handling.
- There is a new variable,
$fish_user_paths
, which can be set universally, and whose contents are appended to $PATH #527 - /etc/paths and /etc/paths.d are now respected on OS X
- fish no longer modifies $PATH to find its own binaries
- There is a new variable,
-
Long lines no longer use ellipsis for line breaks, and copy and paste
should no longer include a newline even if the line was broken #300 -
New syntax for index ranges (sometimes known as "slices") #212
-
fish now supports an
else if
statement #134 -
Process and pid completion now works on OS X #129
-
fish is now relocatable, and no longer depends on compiled-in paths #125
-
fish now supports a right prompt (RPROMPT) through the fish_right_prompt function #80
-
fish now uses posix_spawn instead of fork when possible, which is much faster on BSD and OS X #11
Other Notable Fixes
- Updated VCS completions (darcs, cvs, svn, etc.)
- Avoid calling getcwd on the main thread, as it can hang #696
- Control-D (forward delete) no longer stops at a period #667
- Completions for many new commands
- fish now respects rxvt's unique keybindings #657
- xsel is no longer built as part of fish. It will still be invoked if installed separately #633
- __fish_filter_mime no longer spews #628
- The --no-execute option to fish no longer falls over when reaching the end of a block #624
- fish_config knows how to find fish even if it's not in the $PATH #621
- A leading space now prevents writing to history, as is done in bash and zsh #615
- Hitting enter after a backslash only goes to a new line if it is followed by whitespace or the end of the line #613
- printf is now a builtin #611
- Event handlers should no longer fire if signals are blocked #608
- set_color is now a builtin #578
- man page completions are now located in a new generated_completions directory, instead of your completions directory #576
- tab now clears autosuggestions #561
- tab completion from within a pair of quotes now attempts to "appropriate" the closing quote #552
- $EDITOR can now be a list: for example,
set EDITOR gvim -f
) #541 case
bodies are now indented #530- The profile switch
-p
no longer crashes #517 - You can now control-C out of
read
#516 umask
is now functional on OS X #515- Avoid calling getpwnam on the main thread, as it can hang #512
- Alt-F or Alt-right-arrow (Option-F or option-right-arrow) now accepts one word of an autosuggestion #435
- Setting fish as your login shell no longer kills OpenSUSE #367
- Backslashes now join lines, instead of creating multiple commands #347
- echo now implements the -e flag to interpret escapes #337
- When the last token in the user's input contains capital letters, use its case in preference to that of the autosuggestion #335
- Descriptions now have their own muted color #279
- Wildcards beginning with a . (for example,
ls .*
) no longer match . and .. #270 - Recursive wildcards now handle symlink loops #268
- You can now delete history items from the fish_config web interface #250
- The OS X build now weak links
wcsdup
andwcscasecmp
#240 - fish now saves and restores the process group, which prevents certain processes from being erroneously reported as stopped #197
- funced now takes an editor option #187
- Alternating row colors are available in fish pager through
fish_pager_color_secondary
#186 - Universal variable values are now stored based on your MAC address, not your hostname #183
- The caret ^ now only does a stderr redirection if it is the first character of a token, making git users happy #168
- Autosuggestions will no longer cause line wrapping #167
- Better handling of Unicode combining characters #155
- fish SIGHUPs processes more often #138
- fish no longer causes
sudo
to ask for a password every time - fish behaves better under Midnight Commander #121
set -e
no longer crashes #100- fish now will automatically import history from bash, if there is no fish history #66
- Backslashed-newlines inside quoted strings now behave more intuitively #52
- Tab titles should be shown correctly in iTerm2 #47
- scp remote path completion now sometimes works #42
- The
read
builtin no longer shows autosuggestions #29 - Custom key bindings can now be set via the
fish_user_key_bindings
function #21 - All Python scripts now run correctly under both Python 2 and Python 3 #14
- The "accept autosuggestion" key can now be configured #19
- Autosuggestions will no longer suggest invalid commands #6