我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有说明
这是今天的 Release https://github.com/simba-fs/2021-ironman-example/releases/tag/day05
今天会介绍两个开箱即用( out of box )的外挂和简化指令的 alias
在 CLI 下指令时,有时候会忘记选项叫什麽、档名中的 k
到底是大写还是小写,这时候 autocomplete 就很好用,他会帮我们选出接下来可以填的字,像是选项、子命令、档名等等。
❓ > autocomplete 和 autosuggestion 有什麽不同?会同冲突吗? |
---|
前者是从 completion function 中找建议,後者是从以前下过的指令中找建议,两者不会冲突 |
托 zplug 的福,我们只需要修改 ~/.zshrc
就可以安装外挂了。在 ~/.zshrc
中新增以下设定
+ zplug 'marlonrichert/zsh-autocomplete'
然後重新开启终端机并安装新增的外挂就可以了
你会发现你现在打指令,下面都会出现一些可能可以选的选项,例如同样开头的指令、档名。
这段是我在写完第一版後新增了,所以在 纯‧ CLI 整合开发环境 是没有的
为了可以爽爽的用 autocomplete,我新增了一些设定,这些放到 ~/.zshrc
里面随便一个地方就可以了
# case sensitive
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
# zsh-autocomplete configure
# Down arrow:
bindkey '\e[B' down-line-or-select
bindkey '\eOB' down-line-or-select
# down-line-or-select: Open completion menu.
# down-line-or-history: Cycle to next history line.
这个简单但是贴心的功能在这个 IDE 中很常见,我们的当然也不能漏掉他
一样修改 ~/.zshrc
就可以安装了
+ zplug 'hlissner/zsh-autopair'
重新开启安装後就可以享受自动括号了!
alias 的语法很简单,day02 有提到过,我们再复习一次
alias a=b
关於 alias 有两点要注意
=
左右不能有空白
'
、"
括起来alias a=b # O
alias c = d # X
接下来会有我精链出来必备的 alias,上面的注解是关於这个 alias 解释
# 加上 -r 在删除/复制目录时才不会跳警告
alias rm='rm -r'
alias cp='cp -r'
# -h 可以把档案大小加上适当的单位,比较好读
# -l 印出除了档名其他的资讯,ex:权限、大小
# -F、--color 纯粹是好看
alias ls='ls -hlF --color=auto'
# 大推,这个 alias 非常好用(zsh 有类似功能的外挂可以装,但是我觉得可以用 alias 就用 alias
alias ..='cd ../'
# 把当前目录下的档案/目录以树状结构印出来,会把不重要的(.git, node_modules)忽略,後面可以接路径
alias tree="tree -alI 'node_modules|.git'"
# 加上颜色
alias grep='grep --color=always'
# 超好用,在当前目录中所有档案中找指定字串,用法:grepFind 'console.log',会印出档案行号,还会把目标字串上色
alias grepFind='grep --exclude-dir=node_modules -nr . -e'
# 建立巢状目录时会一并建立上层目录,下面解释
alias mkdir='mkdir -p'
假设你现在在一个空目录里,下以下指令(没有 alias)
mkdir src/user
你会得到 mkdir: 无法建立 「src/user」 目录: 没有此一档案或目录
,这是因为 mkdir
找不到 user
的上层目录 src
,这时候加上 -p
就不一样了,因为 -p
会让 mkdir
在上层目录不存在时自动建立,因此 mkdir src/user
就会成功,不会再跳错误
到今天关於 zsh 的介绍就结束了,明天开始会来讲讲终端机管理神器 tmux
有一些演算法是在图(graph)上操作,我们可以先想一些实际的例子,例如: 开车的时候,使用导航系统...
昨天讲了 Math.abs( ),今天来讲Math.max( ) 那他是什麽呢,来看看下面的 cod...
昨天提到了有关监控的议题,监控服务的其中一个目的是为了在系统发生错误的时候可以即时的通知相关人员,...
阿嬷都看得懂的开始写第一支 .css 档案罗! 昨天我们介绍了怎麽使用 style 标签,把所有 C...
保持同步 资料工程师修炼之路走到现在,真的没有一个系统能同足满足资料储存、查询和逻辑处理,现实世界的...