我正在尝试使用 POSIX sed 加入行。
使用 GNU sed(没有 --posix)可以按预期工作:
$ sed ':a; N; s/\n//; b a' <<< $'a\nb\nc'
abc
但是如果我使用 --posix 我没有输出。
为什么会这样,否则我该怎么做?
在鱼壳中,当您按下它时,它会很好地Alt+l
显示命令的输出。ls
它会保留您在按下它之前编写的命令。我想在zsh中有这个。
这是我非常不稳定的尝试:
function myls {
awk '{len = length($0); for(i=0;i<len;i++) printf "\b"}' <<< "$LBUFFER"
zle push-input
zle accept-line
print $(ls --color=always --indicator-style=slash)
}
zle -N myls
bindkey -- '^[l' myls
我努力清除现有命令,最终使用了 hacky\b
的。它在长行和多行上无法正常工作。
谁能做得更好?
Zsh 上的 Arch Linux Wiki 页面有一个从 terminfo 获取键序列的示例。
typeset -g -A key
key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
...
但是我怎样才能得到带有修饰符的呢?特别是 Alt+j 和 Alt+k。
谢谢你。
我的 .zshrc 中有这个:
# command completion
autoload -Uz compinit
compinit
通常让我浏览命令、参数和文件。
但是使用git --git-dir=<the path> --work-tree="$HOME"
(通常别名)它只适用于子命令(如添加和推送)和参数,而不是文件。我希望它也可以处理文件。
我试着把它放在这样的脚本中:
#!/usr/bin/env sh
git --git-dir=<the path> --work-tree="$HOME" "$@"
它适用于文件,但随后子命令和参数中断。
谢谢。
我想在POSIX shell(破折号)的case语句中捕捉变量是否是多行的。
我试过这个:
q='
'
case "$q" in
*$'\n'*) echo nl;;
*) echo NO nl;;
esac
它nl
以 zsh 形式返回,但NO nl
以破折号形式返回。
谢谢。