マウスを使用せずにターミナルでテキストを選択する


68

ターミナルでコマンドを実行するためにEnterキーを押しますが、その前に、マウスを使用せずにコマンドをクリップボードにコピーしたいです。

どうやって?

端末以外の場所にいる場合は、Ctrl+を使用Homeします。

ターミナルでそのようなテキストを任意に選択する方法はありますか?

編集済み:

  • のような他のプログラムを使用screenするのは良い代替策ではないと仮定する
  • テキストは端末の外側に貼り付けられるため、Ctrl+ yおよび同様のシーケンスでも解決されません

1
Ctrl-Shift-Homeのことですか?
機械式カタツムリ

Shift-Homeは行の先頭にコピーします。Ctrl-Shift-Homeは、ページの先頭にコピーします。
ストラパコフスキー

Shift-HomeとCtrl-Shift-Homeは私にとって同じことを行い(ターミナルの開始にジャンプします)、どちらもCtrl-YまたはCtrl-Shift-V(選択もしない)で一時停止されるものをコピーするようには見えません。ただし、コピーではなく、選択するだけでテキストエディタで機能します。Virtual BoxでOpenSUSE Leap 15を使用します。回答に記載されている他のすべてのキーバインディングは機能します。
ブランボル

回答:


16

次のショートカットをバインドします。

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Crtl+ を使用Pすると、行がクリップボードにコピーされます。次を使用して、ターミナルに貼り付けることができます。

xsel

そして、マウスの中ボタンまたはShift+ を使用してXアプリケーションに移動しますInsert


マウスの使用を避けたい。マウスの中ボタンの代わりにctrl + shift + vで貼り付けることは可能ですか?
-MrGigu

@MrGigu、これは異なるクリップボードを使用します(こちらを参照)。他のショートカットを使用する必要があります。デフォルトでは、Shift + Insert(ここを参照)
Nykakin

ああ、Shift + Insertの動作でうまくいきます!このコマンドで貼り付けられることを知りませんでした。
-MrGigu

ここで実際に何が起こっているかについての説明はありますか?
アレクサンダー

またはxsel -b、標準のクリップボード、つまりCtrl + V / Ctrl + Shift + Vを使用するクリップボードを使用します。また、この方法は複数行のコマンドでは失敗することに注意してください。
wjandrea

27

emacsキー(bash、cshなど)を理解するシェルのいずれかを使用している場合、次の方法で現在のコマンドをコピーできます。

  1. control-A 行の先頭に移動します。

  2. control-K 入力した行全体を削除します。

  3. control-Y テキストをヤンクバックします。

その後control-Y、テキストをヤンクして、シェルコマンドラインエディタへの入力としてテキストを挿入します。

参照man bashして、表示されたら/emacsn「」(次)を続けて入力して、READLINEセクションに進みます。


私はそれを知っていましたが、ターミナルの外に貼り付けたいです。明確化のために編集されました。
ストラパコフスキー

3
control-Uコマンドの最後から直接カットできる
-vstepaniuk

1
2番目のコマンドは私の人生を変えました。
クリシュナ

10

私が考えることができる最も近いものはCtrl+ uCtrl+です。y
これにより、カーソルから行の先頭までが削除され、readlineバッファーから貼り付けられます。ただし、これはクリップボードとまったく同じではありませんが、必要に応じてシェル内に貼り付けることができます。


私はそれを知っていましたが、ターミナルの外に貼り付けたいです。明確化のために編集されました。
ストラパコフスキー

8

screenというプログラムがあります。これにより、複数のインスタンスを切り替えることができるテキストウィンドウシステムが作成されます。ただし、テキストを選択することもできます。

sudo apt-get install screen

そのコマンドはそれをインストールします。

次に入力 screen

コマンドシーケンスを開始するには、ctr-aを使用します。次にescを押すと、カーソルが任意の方向に移動します。Enterキーを押してテキスト選択を開始し、終点に移動してEnterキーをもう一度押します。それはバッファにコピーされます。

次に、ctr-a、次に}を貼り付けます

他のコマンドの詳細はこちらhttp://www.kuro5hin.org/story/2004/3/9/16838/14935


良い提案ですが、screen別の理由で好きではないので、通常のUbuntuターミナルを想定してください。説明のために質問を編集しました。
ストラパコフスキー

1
これは正解として表示される必要があります。
エディール

2

vim内にいる場合は、Shift+ vを使用して1つ以上の行を視覚的に選択し 、バインディングを使用して、たとえばyy、選択をxclipにパイプすることができます。

vimrcにバインディングを追加します。

vnoremap yy :w !xclip -selection clipboard<CR><CR>

これにはxclipをインストールする必要があり、Debian / Ubuntu aptitudeリポジトリにあります。

xclip店はと、標準入力-selection clipboard、それはまた、システムのクリップボードにSTDINをプッシュオプション。

したがってxclip、たとえば、ファイル全体をシステムのクリップボードにコピーするために、ターミナルから一般的な方法で使用することもできます。

cat myfile | xclip -selection clipboard

オプションで次のようなエイリアスも作成できる場合:

alias cb="xclip -selection clipboard" 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.