Emacsのように、Bashからタグをコピーして設定しますか?

Emacsのように、Bashからタグをコピーして設定しますか?

Emacsがデフォルトで使用しているのと同じキーボードバインディングを使用して、Bashのコマンドラインからテキストをコピーして貼り付けることができることを願っています(たとえば、テキストをコピーするために使用するC-space、テキストを貼り付けるために使用するなど)。set-markM-wC-yM-y

これGNU バッシュ文書Bashにはいくつかの主キーバインディングがあります。

たとえば、C-y私の端末ではデフォルトでプル()を使用します。しかし、set-markコマンドが機能するようにすることはできず、copy基本的にどのキーにもバインドされていないようです。

通常、ユーザーが自分のキーバインディングを定義する方法はに追加することです.inputrc。だから私はドキュメントを見て、私が望んでいたEmacsと同様の動作(例えばset-markwithC-spacecopywith M-w)を定義するのに役立つかもしれないと思って、bash関数を見つけました。

copy-region-as-kill ()

すぐに取り出すために、この領域のテキストを終了バッファにコピーします。デフォルトでは、このコマンドはバインドされません。

そして

set-mark (C-@)

マーカーをそのポイントに設定します。数値引数が指定されると、マーカーはその位置に設定されます。

私が正しく理解している場合、上記の意味は基本的にcopy-region-as-killどのキーボードシーケンスにもバインドされていませんが、基本的にすべてのset-markキーボードシーケンスにバインドされていることです。C-@

端末で試しましたが、カーソルを動かすと強調表示されたテキストが表示されないため、機能C-@しないようです。とにかく、上記の関数にキーバインディング(および)をset-mark追加してからリロードを試してみましたが、うまくいきませんでした。他のカスタムキーバインディングが定義されているため、他の項目が機能していることがわかります。M-wC-copy-region-as-killset-mark.inputrcC-x C-r.inputrc

私は何が間違っていましたか?私は何を逃したことがありませんか?

ベストアンサー1

選択項目を強調しませんが、それ以外はかなりうまくいくと思います。

走りましょう

$ bind -p | grep copy-region-as-kill

これが実際に機能していることを確認してくださいC-x C-r

次のように話す必要があります。

"\ew": copy-region-as-kill

その後は正常に動作します。

例:

$ abc<C-Spc><C-a><M-w> def <C-y>

私にください

$ abc def abc

どこにいるのか知りたい場合は、markこれを行いますC-x C-x

例:

$ <C-Spc>abc<C-x><C-x>

カーソルを表示を設定した位置(行の先頭)に戻します。

また、バインディングを追加する必要はないと思いますset-mark。私はそうではありません。

$ bind -p | grep set-mark
"\C-@": set-mark
"\e ": set-mark
# vi-set-mark (not bound)

(ほとんどの端末はC-@メディアに送信します。端末も同様であると仮定します。)C-Spc

他のすべての方法が失敗した場合:

  • Ctrl+同じ端末で動作できますかSpaceemacs -nw
  • 他のAlt/Metaショートカットはbashで動作しますか?

おすすめ記事