
Emacsがデフォルトで使用しているのと同じキーボードバインディングを使用して、Bashのコマンドラインからテキストをコピーして貼り付けることができることを願っています(たとえば、テキストをコピーするために使用するC-space
、テキストを貼り付けるために使用するなど)。set-mark
M-w
C-y
M-y
これGNU バッシュ文書Bashにはいくつかの主キーバインディングがあります。
たとえば、C-y
私の端末ではデフォルトでプル()を使用します。しかし、set-mark
コマンドが機能するようにすることはできず、copy
基本的にどのキーにもバインドされていないようです。
通常、ユーザーが自分のキーバインディングを定義する方法はに追加することです.inputrc
。だから私はドキュメントを見て、私が望んでいたEmacsと同様の動作(例えばset-mark
withC-space
やcopy
with M-w
)を定義するのに役立つかもしれないと思って、bash関数を見つけました。
copy-region-as-kill ()
すぐに取り出すために、この領域のテキストを終了バッファにコピーします。デフォルトでは、このコマンドはバインドされません。
そして
set-mark (C-@)
マーカーをそのポイントに設定します。数値引数が指定されると、マーカーはその位置に設定されます。
私が正しく理解している場合、上記の意味は基本的にcopy-region-as-kill
どのキーボードシーケンスにもバインドされていませんが、基本的にすべてのset-mark
キーボードシーケンスにバインドされていることです。C-@
端末で試しましたが、カーソルを動かすと強調表示されたテキストが表示されないため、機能C-@
しないようです。とにかく、上記の関数にキーバインディング(および)をset-mark
追加してからリロードを試してみましたが、うまくいきませんでした。他のカスタムキーバインディングが定義されているため、他の項目が機能していることがわかります。M-w
C-
copy-region-as-kill
set-mark
.inputrc
C-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+同じ端末で動作できますかSpace?
emacs -nw
- 他のAlt/Metaショートカットはbashで動作しますか?
答え2
私もCwを結んだキルゾーン。これは私の.inputrcです。
# See http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00033.html
set bind-tty-special-chars off
# Define my favorite Emacs key bindings.
"\C-@": set-mark
"\e ": set-mark
"\C-w": kill-region
"\ew": copy-region-as-kill
"\e/": dabbrev-expand