Fre*_*idt 33 zsh shell command-line
我在终端上做了很多工作,所以我学到了很多关于我选择的 shell,zsh。您使用 zsh 的哪些功能来提高自己的工作效率?我的最爱之一是多目录自动完成。因此,cd /fo{tab}/ba{tab}/ba{tab}我可以不用打字,而是可以cd /fo/ba/ba{tab}保存那么多的击键!
Agn*_*ian 50
刚刚发现这个小宝石:
cd old new
Run Code Online (Sandbox Code Playgroud)
这种形式cd将old当前目录的完整路径中的所有出现替换为new并尝试将工作目录更改为结果路径。
例如,如果您的工作目录是/home/larry/code/backrub/server并且您想切换到/home/sergei/code/backrub/server,您需要做的就是:
cd larry sergei
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 22
据我所知,我会坚持 bash 无法做到的事情。
花哨的完成。是的,bash 有一些,但 zsh 知道更多的命令,通常更精确,并且有更多的配置可能性。
该**水珠,例如,**/foo查找一个名为文件foo子目录中递归。(并且***/foo还遵循符号链接。)两个字符而不是长find命令(如果某些文件名包含特殊字符,如空格和引号,则很难正确理解)。
不太常见的 glob 限定符,如foo*(*)(如foo*,但只保留可执行文件),foo(.)(仅常规文件,而不是目录),foo(-@)
(仅悬挂符号链接),foo*(m-5)(仅在过去 5 分钟内foo*(om[1])修改的文件),(最近修改的文件) , 等等。
autocd:键入目录名称作为命令更改为它(cd或pushd取决于您的配置方式)。该cd命令是三个字符太长了!我不能使用 bash 超过 30 秒而不感到疼痛。我还有一些单字符函数,比如
功能 - {
如果 [[ $# -eq 0 ]]; 然后
cd "$OLDPWD"
别的
内置 - “$@”
菲
}
zmv内置和别名 zcp='noglob zmv -C' 别名 zln='noglob zmv -L' 别名 zmv='noglob zmv'
当我在做的时候,noglob内置的。
在precmd与preexec钩子函数:我使用的preexec设置我的终端的标题,包括正在运行的命令,precmd以取代其退出代码的命令。就像是
term_title_base='@%l: %1~'
预执行(){
print -nr $'\e]2;'"${(%)term_title_base} $*"'$\a'
}
预命令(){
print -nr $'\e]2;'"${(%)term_title_base} ($?)"'$\a'
}
bg(以便 Ctrl+Z Ctrl+Z 挂起程序并立即在后台恢复它)。花式 ctrl-z () {
if [[ $#BUFFER -eq 0 ]]; 然后
背景
重新显示
别的
zle 按键输入
菲
}
zle -N 花式ctrl-z
绑定键 '^Z' 花式 ctrl-z
setopt append_history autocd extended_glob no_matchMar*_*man 13
zsh 能够自动完成除文件和目录之外的内容。
例如,安装 git 包后, git-sh{tab} 会显示:
- git 命令 - shortlog -- 总结 git 日志输出 show-branch -- 显示分支及其提交 show-index -- 显示包 idx 文件的内容
hom*_*ast 10
我真的很喜欢全局别名所以
alias -g L='|less
alias -g DN='>/dev/null'
Run Code Online (Sandbox Code Playgroud)
让我做这样的事情
somecommand file arg L
Run Code Online (Sandbox Code Playgroud)
并获得分页。
正如其他人所提到的,zsh 的自动完成功能非常出色。
您也可以轻松地为自定义命令设置自己的自动完成功能。将完整的用户名作为参数的 tab 键:
# ~/.zshrc
function userlist {
reply=(`users | tr ' ' '\n' |sort -u `);}
compctl -K userlist finger
set COMPLETE_ALIASES
Run Code Online (Sandbox Code Playgroud)
我喜欢设置的其他选项:
# turn on spelling correction
setopt correct
# don't save duplicates in command history
setopt histignoredups
# don't allow accidental file over-writes
setopt noclobber
Run Code Online (Sandbox Code Playgroud)
Pushd 和 popd 也很方便。
# Always pushd when changing directory
setopt auto_pushd
# Have pushd with no arguments act like `pushd $HOME'.
setopt PUSHD_TO_HOME
Run Code Online (Sandbox Code Playgroud)
令人讨厌的是,默认情况下,home 和 end 键不像在其他 shell 上那样在 zsh 上工作,但您可以解决这个问题。
# Make home and end keys work.
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11019 次 |
| 最近记录: |