麻烦写 fish if 语句

Trouble writing fish if statement

所以我有以下 if 语句(最初来自我的 .zshrc):

if [ -n "${NVIM_LISTEN_ADDRESS+x}" ]; then
  alias h='nvr -o'
  alias v='nvr -O'
  alias t='nvr --remote-tab'
fi

现在我正在尝试将它移植到我的 config.fish,我知道它与 if 上的 [ 有关,但我不太明白语法。

[ 可以。 fish 中不同的两个部分是 +x 扩展修饰符和循环语法。

在 zsh 中,如果设置了 $NVIM_LISTEN_ADDRESS"${NVIM_LISTEN_ADDRESS+x}" 的计算结果为 x,否则为空;然后比较它是否为空。这似乎是一种仅检查变量是否已设置的迂回方式。

关于循环,鱼块总是以end结束,不需要thendo

所以这是最直接的钓鱼港:

if [ -n "$NVIM_LISTEN_ADDRESS" ]
    alias h='nvr -o'
    alias v='nvr -O'
    alias t='nvr --remote-tab'
end

这更符合惯用语:

if set -q NVIM_LISTEN_ADDRESS
    abbr h 'nvr -o'
    abbr v 'nvr -O'
    abbr t 'nvr --remote-tab'
end

使用原地扩张的鱼abbreviation feature