我有一个bash终端窗口,我只在其中执行一个命令foo。因此,我希望每一行(当然在提示之后)都以“foo”开头,这样我只需输入函数的选项和参数,而不是循环函数名称。当然,能够更改自动插入的字符串也很好,但这对我来说不是必需的。
当我打开终端时,不输入任何内容,我想看到的是:
user@host:~/ $ foo
Run Code Online (Sandbox Code Playgroud)
然后我输入--option argument,当我按下Enter该函数时foo,将使用给定的--optionand调用该函数argument。
我试图摆弄$PS1和$PROMPT_COMMAND使用xdotool type "foo "并且令人惊讶的是它确实有效,但不幸的是它也在提示之前打印了“foo” ,这非常难看:
user@host:~/ $ PROMPT_COMMAND='xdotool type "foo "'
foo user@host:~/ $ foo
Run Code Online (Sandbox Code Playgroud)
我还发现并尝试了Ryan Caloras 的 bash-preexec script 中的preexec函数,但它有完全相同的问题。
如何将 (a (executable-)string) 回显到提示中,使光标在行尾闪烁?是相关的,但那里的答案无法--option argument向要执行的命令添加某些内容 ( )。不过我没有测试zsh——bash对于这么简单的事情应该有一个解决方案,你不觉得吗?
我需要将按键虚拟发送到终端程序(如vi或emacs)。
我想做这样的事情:
echo -e 'iHello, world!\e' | vi
Run Code Online (Sandbox Code Playgroud)
然后使用此缓冲区打开一个vi会话:
Hello, world!
~
~
~
~
~
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为vi不通过stdin读取击键。
我收到此错误:
ex/vi: Vi's standard input and output must be a terminal
Run Code Online (Sandbox Code Playgroud)
如何将一些文本字符串发送到终端程序,就像直接在键盘上键入字符串一样?