变量
Zsh 变量无需加引号。如需要按照空格分割,使用 $=variable 或者 ${=variable}。
判断变量是否存在:$+variable,为 1 即存在。判断 associative array 是否有某一个键:$+hash[key]。特别地,判断一个命令是否存在
(( $+commands[nvim] )) && echo 'nvim exists'变量展开选项
如 ${(FLAG)variable}。参考 1。也可通过打出 ${( 然后查看补全信息。
常用选项:
F: 用换行符连接数组元素j:string:: 用 string 连接数组元素。如果 string 中包含:,可将两个:换成其它字符,只要两字符相同。s:string:: 用 string 分割变量内容q: 将特殊符号用反斜线 escapeq-: 将特殊符号用单引号包裹Q: 去掉一层反斜线 escapek: 一个关系数组(associative array)的所有键(key)kv: 一个关系数组的键和值(value)
例子
${(j: :)${(q-)@}}: 将 shell 参数数组变为 escape 后的一个参数
数组
Zsh 数组下标从 1 开始。
在数组最前加入一个元素(prepend)
array=($ele $array)在数组最后加入一个元素(append)
array=($array $ele)
# 或者
array+=($ele)数组下标选项
如 $array[(FLAG)sub]。参考 2。也可打出 $a[( 然后按 TAB 查看补全信息。
I: 返回sub在数组$array中的最后一次出现的下标,不存在则返回 0i: 同上,不过返回的是第一次出现的下标
判断数组 $path 中是否含有 /bin:
(( $path[(I)/bin] )) && echo '/bin is in $path'参数
一些特殊的 zsh 变量,用于控制 zsh 的行为。另见 man zshparam。
WORDCHARS: 被视为 word 组成部分的字符,类似于 Vim 中的iskeyword。我的配置:WORDCHARS="-"ZLE_SPACE_SUFFIX_CHARS: 在补全后可能会有后缀字符(如补全目录后的/,补全一个参数后的空格),在后缀字符后输入此变量中字符时,后缀字符换成空格
我的配置:ZLE_SPACE_SUFFIX_CHARS='&|'
如:在ls dir补全后变成ls dir/,再输入一个|时命令行变成ls dir |
ZLE Functions
auto-suffix-remove: 如果存在,移除自动被加入的 suffix(如空格或 /)beginning-of-line: 移动到行首