Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
zsh preexec命令修改_Zsh_Zsh Zle - Fatal编程技术网

zsh preexec命令修改

zsh preexec命令修改,zsh,zsh-zle,Zsh,Zsh Zle,有没有办法修改即将执行的命令? 我想将输出重定向到一个文件,并在终端上打印它。 我发现ls>file.txt | cat完成了这项工作,因此我想将>file.txt | cat添加到即将执行的任何命令中。 是否有更好的方法重定向到文件并打印到终端?我正在尝试制作一个记录器。有几种方法可以做到这一点,我最喜欢的是我在这里找到的这一块 还请注意,我将'fc'>file.txt | cat'添加到列表abk 在命令后键入fc,然后点击,。(逗号和句点)快速连续,zsh将替换>fcfor>file.tx

有没有办法修改即将执行的命令? 我想将输出重定向到一个文件,并在终端上打印它。 我发现
ls>file.txt | cat
完成了这项工作,因此我想将
>file.txt | cat
添加到即将执行的任何命令中。

是否有更好的方法重定向到文件并打印到终端?我正在尝试制作一个记录器。

有几种方法可以做到这一点,我最喜欢的是我在这里找到的这一块

还请注意,我将
'fc'>file.txt | cat'
添加到列表
abk


在命令后键入
fc
,然后点击,。(逗号和句点)快速连续,zsh将替换
>fc
for
>file.txt | cat

您可以更改执行行时执行的操作,以更改将执行的命令。这可以通过定义一个函数来完成,然后将该函数绑定到enter键

让我们首先定义一个函数,该函数可以将'>file.txt | cat'结尾添加到任何命令:

function log_and_accept {
    BUFFER="$BUFFER > file.txt | cat"
    zle accept-line
}
下一部分是用新函数实际替换默认的enter键行为。我们正在替换的默认行为是accept行函数,如果我们查看,您将看到accept行绑定到^J和^M

要将此函数绑定到这些字母,首先需要将其转换为小部件:

zle -N log_and_accept_widget log_and_accept
然后您可以绑定它,替换旧的行为:

bindkey '^J' log_and_accept_widget
bindkey '^M' log_and_accept_widget
现在,您将为执行的每个命令扩展该命令。每一张cd、ls、vim等。因此,我建议您定义更多的函数来实际打开和关闭此功能:

function turn_on_logging {
    bindkey '^J' log_and_accept_widget
    bindkey '^M' log_and_accept_widget
}
function turn_off_logging {
    bindkey '^J' accept-line
    bindkey '^M' accept-line
}

zle -N turn_on_logging_widget turn_on_logging
zle -N turn_off_logging_widget turn_off_logging

bindkey '^P' turn_on_logging_widget
bindkey '^O' turn_off_logging_widget

我想你应该小心点。经过一点测试后,我很快就不喜欢它了。

tee是这里要使用的命令,>file | cat非常混乱
function turn_on_logging {
    bindkey '^J' log_and_accept_widget
    bindkey '^M' log_and_accept_widget
}
function turn_off_logging {
    bindkey '^J' accept-line
    bindkey '^M' accept-line
}

zle -N turn_on_logging_widget turn_on_logging
zle -N turn_off_logging_widget turn_off_logging

bindkey '^P' turn_on_logging_widget
bindkey '^O' turn_off_logging_widget