EmacsのようにBashでコピーしてセットマークしますか?


16

私は(つまり、使用して、Emacsがデフォルトで使用するのと同じキーボードバインディングを使用してバッシュで、コマンドラインのテキストをコピー&ペーストできるようにしたいC-spaceためにset-markM-wテキストをコピーするためにC-yM-yなど、それを貼り付けます)。

GNU bashのドキュメントは bashがデフォルトで設定これらのキーバインディングの一部が付属していることを述べています。

たとえば、ヤンク(C-y)は私の端末ではデフォルトで機能します。ただし、コマンドset-markcopyコマンドを機能させることはできず、デフォルトではキーにバインドされていないようです。

通常、ユーザーが独自のキーバインディングを定義できる方法は、キーバインディングをに追加すること.inputrcです。だから、私は見たドキュメントで次のbash関数を見つけ、私が望むEmacsのような振る舞いを定義するのに役立つと思います(つまりset-markwith C-spacecopywith M-w)。

copy-region-as-kill ()

リージョン内のテキストをキルバッファーにコピーして、すぐにヤンクできるようにします。デフォルトでは、このコマンドはバインドされていません。

そして

set-mark (C-@)

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

私が正しく理解している場合、上記はcopy-region-as-killデフォルトでキーボードシーケンスにバインドされていないが、デフォルトでset-markバインドさC-@れていることを意味します。

私はC-@自分の端末で試しましたがset-mark、カーソルを動かしてもテキストがハイライトされていないので、実行するとは思いません。いずれにせよ、キーボードバインディング(M-wおよびC-)を関数内copy-region-as-killset-mark上記の関数に 追加.inputrcC-x C-r、それをでリロードしようとしましたが、これは機能しませんでした。.inputrc他のユーザー定義のキーバインドが定義されているため、他のエントリが動作していることを知っています。

私が間違っていることはありますか?何か不足していますか?


使用しているバージョンbashと端末プログラムは何ですか?
ミケル

私は、GNUのbashのバージョン3.1.17(1)-release(x86_64版-のredhat-のlinux-gnuの)gnome-terminalは(もターミネーター上)で使用している
アメリオバスケス・レイナ

回答:


11

選択を強調表示しませんが、それ以外の場合はうまく機能すると思います。

実行してみてください

$ 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で動作しますか?

1
ありがとう!.inputrcに「\ ew」ではなく「Mw」がありました。強調表示の欠如も私を混乱させました。ちなみにbindコマンドへのポインタをありがとう。今では魔法のように機能します!
アメリオバスケスレイナ

2
ようこそ!うん、あなたは書く必要があります\e\M-readline initファイルの構文を参照してください。
ミケル

なんて素晴らしい答えでしょう!ありがとう。これは私にとって同様の問題を解決しました:D
ephsmith

set-markとcopy-region-as-killは静かに動作しますが、リージョンを強調表示できますか(emacsのように)?
モッシュ

4

kill-regionの Cwもバインドします。ここに私の.inputrc:

#http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00033.htmlを参照
bind-tty-special-charsをオフに設定します

#お気に入りのEmacsキーバインディングを定義します。
「\ C- @」:セットマーク
「\ Cw」:キルリージョン
「\ Mw」:copy-region-as-kill
"\ M- /" dabbrev-expand
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.