Выберите или скопируйте текущую входную строку в Terminal.app

Существует ли горячая клавиша для выбора всего входного текста во входной строке в Terminal.app OS X?

2
задан 09.10.2011, 17:12

1 ответ

Вы могли попытаться отфильтровать 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

Затем сделайте исполняемый файл и установите на визуальный:

$ chmod +x foo.sh
$ export VISUAL=/Users/danielbeck/foo.sh

На a 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, состоящее из вышеупомянутого кода. Сохраните и дополнительно присвойте сочетание клавиш в Установках системы» Клавиатура» Горячие клавиши» Сервисы.

1
ответ дан 12.12.2019, 00:19

Теги

Похожие вопросы