是否有可能为某些日常命令修改stdin?

时间:2013-07-10 14:09:27

标签: shell terminal zsh ack iterm2

这是我想要的功能。

每次我想在项目目录中搜索某些内容。 我使用ack为我搜索一些关键字。

ack hey

有时我想搜索多个单词。所以我输入

ack "hey there"

我希望在输入ack并按下tab后可以自动完成双引号,并且光标可以在双引号之间聚焦。

有人知道怎么做吗?

我曾尝试为此制作一个oh-my-zsh插件。但似乎我需要一些帮助指南。

function _ack_commands() {
    echo -n '"'
}

compdef _ack_commands ack

1 个答案:

答案 0 :(得分:1)

你不能使用

zsh -f
ack() { command ack "$*" }
ack hey there

或沿着这些方向的东西?

[...]

实际上,如果我能按照你描述的内容写一些东西,我很好奇。我不得不认为我的zsh-fu还不够。

要清除光标位置,通常会更改CURSOR值(请参阅man zshzle)。在zle小部件中,您可以使用zmodload -i zsh/parameter访问特殊值(请参阅man zshmodules)。但问题是 - 如zshzle手册页中所述:

  

在ZLE处于活动状态时调用的内部完成小部件和陷阱,这些参数以只读方式提供。

因此,我们无法在完成小部件中更改CURSOR的值。