是否有热键可以选择OS X的Terminal.app输入行中的所有输入文本?
edit-and-execute-command
。它应该能够用适当的最小脚本完成两者EDITOR
。
是否有热键可以选择OS X的Terminal.app输入行中的所有输入文本?
edit-and-execute-command
。它应该能够用适当的最小脚本完成两者EDITOR
。
Answers:
您可以尝试通过合适的或过滤edit-and-execute-command()
(手动):$EDITOR
$VISUAL
$ touch foo.sh
$ open foo.sh
将foo.sh
内容设置为以下内容,并保存:
#!/usr/bin/env bash
# copy current command input to clipboard -- requires local session
cat $1 | pbcopy
# clear the prompt, so no command gets executed when closing this script
# comment out the following line to execute the command you entered instead
echo -n "" > $1
exit 0
然后制作可执行文件并设置为visual:
$ chmod +x foo.sh
$ export VISUAL=/Users/danielbeck/foo.sh
在bash
提示符(或readline
我认为的任何动力提示)上,您可以通过按Ctrl-X Ctrl-E
来调用来复制当前命令输入edit-and-execute-command()
。
编辑您的~/.inputrc
文件以更改该热键。编辑你.bash_profile
的保持这个$EDITOR
/ $VISUAL
- 缺点是显而易见的$EDITOR
,不幸的是你永远不会再适当
或者,您可以尝试复制此用户正在做的事情,但他正在使用zsh
,而不是bash
。
终端本身不知道当前行的哪一部分是你的提示,你的输入是什么部分。因此,例如通过AppleScript访问它的行一般不起作用。
但是,您可以读取当前选项卡的完整输出并获取其最后一行,并通过筛选尝试删除它的提示部分。
我的提示结束$
,因此以下命令有效:
tell application "Terminal" tell selected tab of window 1 to do shell script "echo '" & history & "' | sed '/^$/d' | tail -n1 | cut -d$ -f2-"
它将获取当前窗口的当前选项卡的history
属性,并过滤它sed
以删除所有空行,然后使用最后一行tail
,然后删除所有内容,包括第一$
行(即我的提示)使用cut
。
此程序的输出是您当前的命令行。真是毫无意义的运动:
~ $ osascript Library/Scripts/get_line.scpt
osascript Library/Scripts/get_line.scpt
要在最后将其复制到剪贴板,请更改为以下内容:
tell application "Terminal" to tell selected tab of window 1 to do shell script "echo '" & history & "' | sed '/^$/d' | tail -n1 | cut -d$ -f2- | pbcopy"
您可以使用Automator创建在应用程序终端中不接收任何输入的服务,并执行包含上述代码的单个“运行AppleScript脚本”操作。保存,并可选择在系统偏好设置»键盘»键盘快捷键»服务中指定键盘快捷键。
bash
进程中echo $PS1
加载配置文件后创建一个好的模板,从输出中删除它们。不幸的是,一样的东西$PWD
,并date
会打破这种方法。或者,可以$PS1
临时备份到另一个变量,并在执行命令后恢复它。