标签: fish

如何在鱼壳中将 EDITOR 更改为 Pico?

我不能让水银(hg使用pico时,我用我的编辑器fish壳。

我试过使用这个和其他变体,但似乎没有任何帮助:

set -U EDITOR pico
Run Code Online (Sandbox Code Playgroud)

hg commit将始终vi以编辑器的身份打开,而我不希望那样。

更新:添加setenv EDITOR pico到文件~/.config/fish/config.fish做了我想要的。

fish

16
推荐指数
3
解决办法
1万
查看次数

如何使终端窗口标题与 tmux 窗口同步

我正在使用一个名为“计时”的程序来跟踪我的时间。计时使用 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 窗口或切换到新窗口,则终端不会更新。

它更新,如果我使用类似pwdfish_title

function fish_title
  pwd
end
Run Code Online (Sandbox Code Playgroud)

关于如何fish_title动态获取 tmux 窗口名称的任何想法?

terminal iterm fish tmux

16
推荐指数
1
解决办法
8399
查看次数

您如何在鱼中“获取”文件?

我想用钥匙串的外壳,但我不知道怎么去鱼加载〜/ .keychain /主机名鱼文件来设置适当的环境变量。

在 bash 中,有“source”命令,但在 fish 中不存在。

keychain fish

15
推荐指数
2
解决办法
1万
查看次数

在鱼中将 shift-tab 绑定到完全向后

我发现自己使用了 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

keyboard-shortcuts autocomplete fish

14
推荐指数
1
解决办法
1963
查看次数

如何在鱼壳中进行命令替换?

像这样的命令必须如何用鱼来表达?

ls -l $(which vim)
Run Code Online (Sandbox Code Playgroud)

fish

13
推荐指数
1
解决办法
8769
查看次数

使 bash 尽可能靠近鱼

我喜欢鱼壳,并且只在 MacOS 中使用它,但我在其他任何地方都使用 bash,因为它是唯一安装的东西。感受到维护这两个 shell 的配置文件的痛苦后,我决定停止使用 fish,而是回退到 bash。为了让它尽可能轻松,我应该将哪些配置选项/插件/等与 bash 一起使用以使其尽可能接近fish?

我最怀念的事情:

  • 自动完成支持:fish 记住我所有的命令,完成部分(有时是巨大的)命令,似乎理解我使用的所有 cmd-line 应用程序并提供他们命令的完成等。对于每个命令,fish 以暗色显示命令它会自动完成,如果我要点击选项卡。
  • git 支持:fish 显示我是否在 github 存储库中,分支的名称,以及它是否已被修改或清晰使用我的 username@hostname 旁边的漂亮颜色,我也希望在 bash 上也有这个

bash fish

13
推荐指数
2
解决办法
5204
查看次数

如何为鱼壳安装/制作自定义提示?

我在#中使用fish 2.0!Linux,但这可能是安装错误,因为我的 ~/.config/fish/config.fish 是空的。

linux shell fish crunchbang

12
推荐指数
1
解决办法
1万
查看次数

有没有办法从鱼壳中“来源”一个 sh 脚本?

我喜欢将我的许多环境变量定义放在.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)

bash environment-variables sh fish

11
推荐指数
1
解决办法
9803
查看次数

如何让与 Homebrew 一起安装的 Fish shell 和 NVM 一起工作?

我正在尝试尽可能多地使用 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。

任何人都可以帮忙吗?

bash homebrew fish node.js macos

10
推荐指数
2
解决办法
7461
查看次数

fish_config 在哪里保存它的设置?

我已经使用该fish_config实用程序来自定义我的语法配色方案,现在我想将这些设置复制到我无法运行的远程服务器fish_config上。它在哪里保存通过该实用程序所做的更改?

shell fish

10
推荐指数
1
解决办法
3251
查看次数