Symbolic link navigation for Fish


Symnav was developed and tested on Fish 2.6.0. Please report any issues.


fisher externl/fish-symnav


Copy all files in the functions directory into your fish functions directory, typically ~/.config/fish/functions. Several key bindings need to be added, see for the required binding list and the bind command documentation for instructions.

Use bind | grep __symnav to check that symnav key bindings are enabled.


  • Tracks directory changes involving symbolic links
  • Performs completion of ../ directories involving symbolic links
  • Mode for user to choose between symbolic link and real path during completion
  • Substitution of $PWD on the command line
  • Automatic prompt configuration


# Update function 'prompt_pwd' to use '$symnav_pwd'.
set symnav_prompt_pwd 1 (0 to disable)

# Update function 'fish_prompt' to use '$symnav_pwd'.
set symnav_fish_prompt 1 (0 to disable)

# Whether substituting or completing directories such as '../' should use symbolic links ('symlink')
# or asked the user to choose between the symbolic link and the real path ('ask').
set symnav_substitution_mode symlink (or 'ask')

# Execute immediately after command line substitution has occurred.
set symnav_execute_substitution 1 (0 to disable)

# Substitute '$PWD' for '$symnav_pwd' prior to command execution.
set symnav_substitute_PWD 1 (0 to disable)

# Initialize symnav during first execution or completion.
set symnav_lazy_initialize 1 (0 to disable)

# List of additional functions to modify for symnav compatibility.
# Instances of '$PWD', 'realpath', will be replaced by a new in memory function
set symnav_modify_functions 'func1' 'func2' ...

Fish Symnav

Symbolic link navigation for Fish shell

Fish Symnav Info

⭐ Stars 12
🔗 Source Code
🕒 Last Update 3 years ago
🕒 Created 5 years ago
🐞 Open Issues 0
➗ Star-Issue Ratio Infinity
😎 Author externl