Saya ingin dapat menyalin dan menempelkan teks pada baris perintah di Bash menggunakan binding keyboard yang sama dengan yang digunakan Emacs secara default (yaitu menggunakan C-space
untuk set-mark
, M-w
untuk menyalin teks C-y
,, M-y
untuk menempelkannya, dll.).
The dokumentasi GNU Bash mengatakan bahwa Bash datang dengan beberapa binding kunci ini diatur secara default.
Misalnya, menarik ( C-y
) berfungsi secara default di terminal saya. Namun, saya tidak bisa mendapatkan set-mark
dan copy
perintah untuk bekerja, dan mereka tampaknya tidak terikat dengan kunci apa pun secara default.
Biasanya, cara pengguna dapat mendefinisikan binding kuncinya sendiri adalah dengan menambahkannya .inputrc
. Jadi saya mencari dan menemukan fungsi bash berikut dalam dokumentasi yang saya anggap dapat membantu saya mendefinisikan perilaku seperti Emacs yang saya inginkan (yaitu set-mark
dengan C-space
dan copy
dengan M-w
).
copy-region-as-kill ()
Salin teks di wilayah ke buffer kill, sehingga dapat disentak segera. Secara default, perintah ini tidak terikat.
dan
set-mark (C-@)
Tetapkan tanda ke titik. Jika argumen numerik diberikan, tanda diatur ke posisi itu.
Jika saya mengerti dengan benar, di atas berarti bahwa copy-region-as-kill
tidak terikat ke urutan keyboard apa pun secara default, sementara set-mark
terikat C-@
secara default.
Saya mencoba C-@
di terminal saya, tetapi saya pikir itu tidak berjalan set-mark
karena saya tidak melihat teks yang disorot ketika saya memindahkan kursor saya. Bagaimanapun, saya mencoba menambahkan binding keyboard ( M-w
dan C-
) ke fungsi copy-region-as-kill
dan set-mark
di atas di saya .inputrc
dan kemudian memuat kembali dengan C-x C-r
, tetapi ini tidak berhasil. Saya tahu bahwa entri saya yang lain sedang .inputrc
bekerja karena saya memiliki keybindings lain yang ditentukan pengguna.
Adakah yang saya lakukan salah? Apakah saya kehilangan sesuatu?
sumber
bash
apa dan program terminal apa yang Anda gunakan?Jawaban:
Itu tidak menyoroti pilihan, tetapi kalau tidak saya pikir itu berfungsi dengan baik.
Coba jalankan
untuk memastikan itu
C-x C-r
benar - benar berfungsi.Seharusnya dikatakan:
Setelah itu, itu akan berfungsi dengan baik.
Contoh:
memberi saya
Jika Anda ingin tahu di mana
mark
berada, lakukan sajaC-x
C-x
.Contoh:
akan meletakkan kursor kembali ke tempat Anda menetapkan tanda (awal baris).
Juga, saya tidak berpikir Anda perlu menambahkan
set-mark
ikatan. Saya tidak melakukannya.(perhatikan bahwa sebagian besar terminal mengirim
C-@
ketikaC-Spc
ditekan. Saya berasumsi terminal Anda juga.)Jika semua ini gagal:
emacs -nw
terminal yang sama?sumber
\e
atau\M-
. Lihat sintaks file readline init .Saya juga mengikat Cw untuk membunuh-wilayah . Di sini .inputrc saya:
sumber