2016-04-08 1 views
1

場合は魚を書いだから私は(もともと私の.zshrcから)文の場合は、次のいる:トラブル声明

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

は、今私は私のconfig.fishに渡っポートにこれをしようとしています、私はそれがで行うことであることを理解場合は[しかし、私は非常に構文を理解することはできません。

答えて

2

[はOKです。魚で異なる2つの部分は、+ x拡張修飾子とループ構文です。

zshの場合、"${NVIM_LISTEN_ADDRESS+x}"は、$NVIM_LISTEN_ADDRESSが設定されている場合はxと評価され、そうでない場合は空です。それが空であるかどうか比較されます。これは、変数が設定されているかどうかをチェックするラウンドアバウトな方法のようです。

魚のブロックは常にendで終わり、thenまたはdoの必要はありません。

だから、これは魚に最も直接的なポートです:

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を使用します。

+0

このような広範な回答をありがとうございます。 –