OS XのTerminal.appの入力行のすべての入力テキストを選択するホットキーはありますか?
edit-and-execute-command
。として適切な最小限のスクリプトで、両方を達成できるはずEDITOR
です。
OS XのTerminal.appの入力行のすべての入力テキストを選択するホットキーはありますか?
edit-and-execute-command
。として適切な最小限のスクリプトで、両方を達成できるはずEDITOR
です。
回答:
あなたは、適切なまたはを介してフィルタリング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
一時的に別の変数にバックアップし、コマンドの実行後に復元することもできます。