2

Есть горячая клавиша, чтобы выбрать весь текст ввода в строке ввода в Terminal.app OS X?

1 ответ1

1

Вы можете попробовать edit-and-execute-command() (manual) через подходящий $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», состоящее из приведенного выше кода. Сохраните и при необходимости назначьте сочетание клавиш в Системных настройках »Клавиатура» Сочетания клавиш »Службы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .