マウスを使わずにコマンドラインからクリップボードにテキストをコピーするには?

マウスを使わずにコマンドラインからクリップボードにテキストをコピーするには?

マウスに触れることなくコマンドラインの現在のテキストをクリップボードにコピーする方法を見つけたいと思います。つまり、キーボードでテキストを選択するだけです。完全なソリューションにつながる中間ソリューションを見つけました。

Ctrl+a- 行の先頭に移動します。

Ctrl+k- ライン全体を切り取ります。

Ctrl+y- 切り取ったテキストを後ろに引きます。

Ctrl+uまたはを使用して最初の2つのステップを実行することもできます。

もちろんこれはうまくいきますが、切り取ったテキストが正確にどこに保存されているかを調べようとしています。使用せずにアクセスする方法はありますかCtrl+y?わかりましたが、テキストをクリップボードに直接移動するのにも使ったことがあるので、保存されたデータをにxclip移動するか考えていますが、どうすればいいかわかりません。Ctrl+kxclip

これまでに私が得た方法は、行の先頭と末尾にxdotool追加してEnterキーを押すスクリプトを作成することです(デフォルトではパイプされているカスタムエイリアスです)。この方法も機能しますが、実際には「きれいな」解決策ではありません。echo| zxczxcxclip

違いがある場合はCshellを使用しています。

screen編集:私はそれを解決策として使用したくありませんでしたが、これを言及するのを忘れました。

ありがとうございます!

答え1

あるいは、派生物を使用している場合は、xtermテキストの選択を開始および終了するようにキーバインディングを設定し、X11のデフォルト選択または切り取りバッファとして保存することもできます。望むよりman xterm。たとえば、次を追加します~/.Xdefaults

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

項目は1つしかありませんXTerm*VT100.Translations。 X11サーバーを新しいファイルの内容で更新しますxrdb -merge ~/.Xdefaults。再起動xterm

これで、コマンドプロンプトに入力したときにテンキーを入力1すると、マウスのボタン1を押すのと同じように、現在のテキストカーソル位置のテキストが選択され始めます。矢印キーを使用してカーソルを移動し、2数字パッドを押すと、中央のテキストが強調表示され、デフォルトの選択とcutbuffer0にコピーされます。他のより適切なキーとアクションを選択した可能性があります。同様に、バインディングを使用して選択項目を貼り付けることができますinsert-selection(PRIMARY)

答え2

コマンドを最初に実行する場合は、次のパターンを使用できます。最後のコマンドをつかみ、fc履歴番号を削除してクリップボードに保存します。(現在のMacではZshですが、設定に合わせて調整してください。):

# Call the save-to-clipboard function something like "save"
% save() { fc -l -1 | gsed -r 's/^\s*[0-9]+\s+//' | pbcopy }

# Execute your interesting saveable command
% some-interesting-command with args...

# Put the command onto your clipboard
% save

あなたもできますキーの組み合わせにバインド入力を避けるためにsave

関連情報