Mik*_*maa 29 zsh command-history
是否有可能...
加强本地 ZSH shell 历史记录(操作仅在该提示中发生)
加强全局 ZSH 历史记录(共享历史记录已打开)- 默认情况下,当共享历史记录打开时按向上箭头时会发生什么
... 分别地。
例如,可以将 CTRL+up 绑定为全局历史,正常为本地历史。同时,将全局历史用于向后历史搜索(即CTRL+ R)是有意义的。
这可能会加速某些 shell 操作,因为某些操作特定于该 shell 窗口,并且您想返回到它们中。
lum*_*ric 27
将此复制并粘贴到您的.zshrc:
游标使用本地历史:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Run Code Online (Sandbox Code Playgroud)
如果您还需要键绑定(CTRL+ 游标)来逐步浏览全局历史记录,请将其添加到您的.zshrc:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Run Code Online (Sandbox Code Playgroud)
为了使这项工作起作用,需要启用选项 SHARE_HISTORY(请参阅16.2.4 History)。运行setopt并检查是否列出了“sharehistory”。如果没有添加setopt sharehistory到您的.zshrc. 然后可以像我们上面所做的那样使用 set-local-history 。文档说:
默认情况下,历史移动命令访问导入的行和本地行,但您可以使用 set-local-history zle 绑定打开和关闭它。也可以创建一个 zle 小部件,使某些命令忽略导入的命令,而有些则包含它们。
请注意,默认情况下使用全局历史记录(并且所有函数都以“zle set-local-history 0”结尾,即禁用本地历史记录)。因此,默认情况下按CTRL+R将搜索全局历史记录(这在大多数情况下是有意义的)。
这与@mpy 的解决方案非常相似,但已准备好进行复制和粘贴。它会向上和向下覆盖光标键。我使用了这个邮件列表条目。
也可以看看:
您可以设置一个特殊的 zle 小部件以仅显示本地历史记录项目:
function only-local-history () {
zle set-local-history 1
zle up-history
zle set-local-history 0
}
zle -N only-local-history
Run Code Online (Sandbox Code Playgroud)
假设↑绑定到up-line-or-history(我认为这是默认值),您可以将此小部件绑定到另一个击键,例如CTRL+ ↑:
bindkey "^[Oa" only-local-history
Run Code Online (Sandbox Code Playgroud)
如果这有效可能取决于您的终端。上面的行在URxvt/Screen. 有了xterm你需要
bindkey "^[[1;5A" only-local-history
Run Code Online (Sandbox Code Playgroud)
对于CTRL+ ↑。
另一种变体可能是
function peek-history () {
zle set-local-history
zle up-history
zle set-local-history
}
zle -N peek-history
Run Code Online (Sandbox Code Playgroud)
因此,如果您启用了本地历史记录,则可以查看全局历史记录,反之亦然。
小智 5
@lumbic 的答案对我有用,只需进行一些更改:
setopt share_history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
bindkey '^[OA' up-line-or-history # Cursor up
bindkey '^[OB' down-line-or-history # Cursor down
bindkey '^[[1;5A' up-line-or-local-history # [CTRL] + Cursor up
bindkey '^[[1;5B' down-line-or-local-history # [CTRL] + Cursor down
Run Code Online (Sandbox Code Playgroud)
此代码将全局历史记录设置为默认值,并使用 CTRL-箭头作为本地历史记录。
注意:我将 zsh 5.0.2 与 oh-my-zsh 一起使用。
| 归档时间: |
|
| 查看次数: |
7242 次 |
| 最近记录: |