我不能让水银(hg)使用pico时,我用我的编辑器fish壳。
我试过使用这个和其他变体,但似乎没有任何帮助:
set -U EDITOR pico
Run Code Online (Sandbox Code Playgroud)
hg commit将始终vi以编辑器的身份打开,而我不希望那样。
更新:添加setenv EDITOR pico到文件~/.config/fish/config.fish做了我想要的。
我正在使用一个名为“计时”的程序来跟踪我的时间。计时使用 iTerm 中当前窗口的名称进行分类。
我想设置 iTerm 的当前标题以匹配当前活动的 tmux 窗口的名称。
我已经在以下位置设置了一个文件~/.config/fish/functions/fish_title.fish:
function fish_title
tmux display-message -p '#W'
end
Run Code Online (Sandbox Code Playgroud)
每当我打开一个新的终端窗口时,这都会成功地将当前的 Tmux 窗口标题输出到终端窗口。但是,如果我重命名 tmux 窗口或切换到新窗口,则终端不会更新。
它更新,如果我使用类似pwd的fish_title:
function fish_title
pwd
end
Run Code Online (Sandbox Code Playgroud)
关于如何fish_title动态获取 tmux 窗口名称的任何想法?
我发现自己使用了 fish-shell 的自动完成功能,其中按 Tab 两次或更多次循环浏览建议。但是后来我不小心按了一次多次tab,我想回到之前的建议,所以我按了shift-tab,它只附加[z到命令。
例如,当我输入cd Dtabtab:
~> cd Desktop/
Run Code Online (Sandbox Code Playgroud)
我按tab,结果:
~> cd Documents/
Run Code Online (Sandbox Code Playgroud)
现在,当我按下 时<shift+tab>,提示变为~> cd Documents/[Z而不是返回到所需的状态:
~> cd Desktop/
Run Code Online (Sandbox Code Playgroud)
我该怎么做(最好使用fish_user_key_bindings.fish文件)?该文档仅提供了特殊功能complete。
我喜欢鱼壳,并且只在 MacOS 中使用它,但我在其他任何地方都使用 bash,因为它是唯一安装的东西。感受到维护这两个 shell 的配置文件的痛苦后,我决定停止使用 fish,而是回退到 bash。为了让它尽可能轻松,我应该将哪些配置选项/插件/等与 bash 一起使用以使其尽可能接近fish?
我最怀念的事情:
我在#中使用fish 2.0!Linux,但这可能是安装错误,因为我的 ~/.config/fish/config.fish 是空的。
我喜欢将我的许多环境变量定义放在.profile脚本中。如果我使用的是 POSIX 兼容的交互式 shell,比如 bash,我可以使用 source 命令从.profile更新时重新导出环境变量,而无需打开新的终端窗口。有没有办法在我使用时做同样的事情fish,它使用不同的语法来导出变量?我可以告诉fish 运行一个子sh进程并重新导出它定义的任何变量吗?
当我尝试做显而易见sh .profile的事情时,环境变量显然只在子sh进程中定义,而不会在父fish进程中更新。
编辑:定义我的变量的 shell 代码是这个
CAML_LD_LIBRARY_PATH="/home/hugo/.opam/4.01.0/lib/stublibs"; export CAML_LD_LIBRARY_PATH;
PERL5LIB="/home/hugo/.opam/4.01.0/lib/perl5:"; export PERL5LIB;
OCAML_TOPLEVEL_PATH="/home/hugo/.opam/4.01.0/lib/toplevel"; export OCAML_TOPLEVEL_PATH;
MANPATH=":/home/hugo/.opam/4.01.0/man"; export MANPATH;
PATH="/home/hugo/.opam/4.01.0/bin:/home/hugo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"; export PATH;
Run Code Online (Sandbox Code Playgroud)
不幸的是,此代码是由另一个程序自动生成的,因此也必须使用自动过程来转换为 Fish。我尝试使用以下 sed 脚本
sed 's/\(.*\)="\(.*\)".*/set -x \1 \'\2\';/'
Run Code Online (Sandbox Code Playgroud)
输出以下鱼代码
set -x CAML_LD_LIBRARY_PATH '/home/hugo/.opam/4.01.0/lib/stublibs';
set -x PERL5LIB '/home/hugo/.opam/4.01.0/lib/perl5:';
set -x OCAML_TOPLEVEL_PATH '/home/hugo/.opam/4.01.0/lib/toplevel';
set -x MANPATH ':/home/hugo/.opam/4.01.0/man';
set -x PATH '/home/hugo/.opam/4.01.0/bin:/home/hugo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games';
Run Code Online (Sandbox Code Playgroud)
我可以使用 eval 和()替换来运行
eval (my-sed-script) …Run Code Online (Sandbox Code Playgroud) 我正在尝试尽可能多地使用 Homebrew 管理我的 OSX 包。我已经使用 Homebrew 安装了 Fish Shell 和 NVM,但无法让 Fish 识别我的 NVM 安装。使用 Bash 运行时,NVM 命令运行良好,可能是因为当您使用 Homebrew 安装 NVM 时,它让我在我的 .bashrc 文件中添加了一些额外的行。
使用 Homebrew 安装 NVM 后,它说:
Add NVM's working directory to your $HOME path (if it doesn't exist):
mkdir ~/.nvm
Add the following to $HOME/.bashrc, $HOME/.zshrc, or your shell's
equivalent configuration file:
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
Run Code Online (Sandbox Code Playgroud)
此外,Homebrew 安装脚本似乎已将此行添加到我的 ~/.profile
source /usr/local/opt/nvm/nvm.sh
Run Code Online (Sandbox Code Playgroud)
我希望可以对 Fish 使用相同的技术来访问 NVM 安装,但我似乎无法让它工作。
我发现了这种技术:https : //github.com/passcod/nvm-fish-wrapper 但我宁愿不必包装 NVM。
任何人都可以帮忙吗?
我已经使用该fish_config实用程序来自定义我的语法配色方案,现在我想将这些设置复制到我无法运行的远程服务器fish_config上。它在哪里保存通过该实用程序所做的更改?