Terminal.appで現在の入力行を選択またはコピーします


2

OS XのTerminal.appの入力行のすべての入力テキストを選択するホットキーはありますか?


コピーする目的で選択するか、置換する目的で選択しますか?
-NReilingh

上記のすべて
erikvold

コピーして置き換えたい場合は、をご覧になることをお勧めしますedit-and-execute-command。として適切な最小限のスクリプトで、両方を達成できるはずEDITORです。
ダニエルベック

2
コマンドラインには選択されたテキストの概念がまったくないため、入力を続けた場合にマウスで選択されたテキストが置き換えられないため、これはやや怪しいものになります。あなたの質問に対する答えは「いいえ」ですが、ダニエルの提案はあなたが一緒に代替物をハックするのに役立つかもしれません。他に役立つ可能性のあるもの:control-aおよびcontrol-eを使用して、プロンプトで入力したものの最初と最後にジャンプできます。また、Automator、Services、およびAppleScript GUIスクリプト。
-NReilingh

@NReilingh pinging you; あなたが私の提案について考えたように、あなたは私が思いついたものに興味があるかもしれません。
ダニエルベック

回答:


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

次に、実行可能にし、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スクリプト実行アクションを実行するサービスを作成できます。保存し、オプションでシステム環境設定»キーボード»キーボードショートカット»サービスでキーボードショートカットを割り当てます


あなた(または他の誰か)は、最後の例でプロンプト文字列を取り除くためのより良い方法を見つけましたか?
Lri

@Lri プロファイルファイルを読み込んbashecho $PS1後、別のプロセスで、出力から削除される適切なテンプレートを作成できます。残念ながら、のようなものは$PWDdateこのメソッドを壊します。または、$PS1一時的に別の変数にバックアップし、コマンドの実行後に復元することもできます。
ダニエルベック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.