Fish Shell
1. Add or Remove PATH
in fish
To permanently add the path /opt/cuda/bin to your PATH variable, use the command
fish_add_path /opt/cuda/bin
. This will ensure the path remains in your
environment even after restarting the terminal, without needing to include the
command in config.fish.
set --erase --universal fish_user_paths[4]
can erase the 4th path universally
so it persists in new sessions.
I prefer to use a global fish_user_paths. This is not save automatically, I need
to add this to config.fish
, if I want it to stay:
fish_add_path -g /opt/cuda/bin
2. Lazy-Loading Conda for Faster Shell Startup
In machine learning, we often use conda to manage our python environments, and have several conda installations (on network drives, in $HOME, etc…). It can be a pain to manage them. Worse still, since conda loads on shell startup, it can noticeably slow you down when opening terminals – especially when loading it off a slow network.
Here’s a simple trick for your shell config to alleviate the pain:
1 | set -x CONDA_PATH /opt/miniconda3/bin/conda $HOME/miniconda3/bin/conda |
This snippet is for the fish shell and goes in your config.fish
. It replaces
the block that conda auto-generates when you run conda init fish
(the one that
begins with # !! Contents within this block are managed by 'conda init' !!
).
3. Configuration of shortcuts for fish
Use bind to configure the shortcuts, e.g.,
bind -M insert \ck 'accept-autosuggestion'
. -M
is used to define the mode of
the shortcut. accept-autosuggestion
is the input function, which means accept
the current autosuggestion. For more special function see
this.
In fish bind -M normal
can not work for normal mode of vi input method.
However, bind -M default
works fine for the normal mode of the vi input
method.
3.1. Shortcut to copy contents selected in visual model to the clipboard.
bind --mode visual --sets-mode default Y 'fish_clipboard_copy; commandline -f repaint-mode; commandline -f end-selection'
--sets-mode default
go back to the normal mode after fish_clipboard_copy
.
commandline -f repaint-mode
can refresh the mode then show N
(normal mode),
otherwise it will show V
, even though it has already gone back to normal mode
by --set-mode default
.
commandline -f end-selection
can stop selection, otherwise it will still
highlight the contents which are selected before.
commandline -f function
is useful. The detail of the functions can be used see
‘man bind’.
4. Set the default editor in fish
fzf allows fish to use fuzzy search. \co
is a shortcut of fzf-fish to open a file by fuzzy search with default editor.
The default editor can be set by set -gx EDITOR nvim
.