我有一个bash
终端窗口,我只在其中执行一个命令foo
。因此,我希望每一行(当然在提示之后)都以“foo”开头,这样我只需输入函数的选项和参数,而不是循环函数名称。当然,能够更改自动插入的字符串也很好,但这对我来说不是必需的。
当我打开终端时,不输入任何内容,我想看到的是:
user@host:~/ $ foo
Run Code Online (Sandbox Code Playgroud)
然后我输入--option argument
,当我按下Enter该函数时foo
,将使用给定的--option
and调用该函数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)
如何将一些文本字符串发送到终端程序,就像直接在键盘上键入字符串一样?