制作自定义快捷键来编辑当前行
Make custom shortcut keys to edit current line
bindkey
内置的 zsh 似乎是一个好的开始。但我不知道如何编写绑定到键的函数,比如 Ctr+/
,以查找模式并将当前行删除到末尾。模式可以是默认模式,也可以是用户调用函数时提供的字符串。
示例用例:
当我键入此命令并附加注释时:
echo Hello World # Try echo
在那之后,我回滚历史记录并想重新使用命令,我想快速删除从 #
到末尾并从那里开始输入新命令。
另一个用途:
当我向上滚动行时,我想调用该函数,我们将其命名为deleteFrom
,它会提示输入,默认为#
。我可以输入 World
。然后删除从 "World" 到末尾的行,将光标放在那里,这样我就可以开始输入了。
为此,您需要 extend Zle(Z-shell 行编辑器)通过添加您自己的小部件来浏览历史记录,然后编辑拾取的行(如果我理解正确的话)。
这是绑定到 'C' 的超级简单小部件,它将删除当前命令行中# 之后的任何字符(这也适用于从历史记录中获取的行):
my-zle-widget () {
BUFFER="${BUFFER%%#*}"
zle .end-of-line
}
zle -N my-zle-widget
bindkey C my-zle-widget
您不需要从头开始实施所有内容,并且可以调用现有的 zle 小部件来完成已经实施的部分工作(请参阅我的示例中的 zle .end-of-line
)。您可以使用 zsh repo 中的代码作为参考(请注意,这些是自动加载的,不需要包装在函数中——它们只是函数体)。
bindkey
内置的 zsh 似乎是一个好的开始。但我不知道如何编写绑定到键的函数,比如 Ctr+/
,以查找模式并将当前行删除到末尾。模式可以是默认模式,也可以是用户调用函数时提供的字符串。
示例用例:
当我键入此命令并附加注释时:
echo Hello World # Try echo
在那之后,我回滚历史记录并想重新使用命令,我想快速删除从 #
到末尾并从那里开始输入新命令。
另一个用途:
当我向上滚动行时,我想调用该函数,我们将其命名为deleteFrom
,它会提示输入,默认为#
。我可以输入 World
。然后删除从 "World" 到末尾的行,将光标放在那里,这样我就可以开始输入了。
为此,您需要 extend Zle(Z-shell 行编辑器)通过添加您自己的小部件来浏览历史记录,然后编辑拾取的行(如果我理解正确的话)。
这是绑定到 'C' 的超级简单小部件,它将删除当前命令行中# 之后的任何字符(这也适用于从历史记录中获取的行):
my-zle-widget () {
BUFFER="${BUFFER%%#*}"
zle .end-of-line
}
zle -N my-zle-widget
bindkey C my-zle-widget
您不需要从头开始实施所有内容,并且可以调用现有的 zle 小部件来完成已经实施的部分工作(请参阅我的示例中的 zle .end-of-line
)。您可以使用 zsh repo 中的代码作为参考(请注意,这些是自动加载的,不需要包装在函数中——它们只是函数体)。