Bagaimana cara membuat tombol panah ctrl bergerak maju / mundur satu kata sekaligus di Cygwin bash?

97

Dalam instalasi Cygwin default, menggunakan CTRL-LEangganROW atau CTRL-RIGHTARROW cukup mencetak 5C atau 5D alih-alih melewatkan kata pada waktu yang diharapkan.

Tombol Home / End berfungsi dengan baik, sehingga memetakan ulang mungkin dilakukan.

Tom
sumber
Perhatikan bahwa pertanyaan ini membahas Cygwin, tetapi dapat memiliki aplikasi umum untuk sistem Unix / Linux. Jika Anda menggunakan Putty dan menemukan bahwa solusi di sini tidak bekerja untuk Anda, lihat pertanyaan khusus tentang kode apa yang akan digunakan untuk Putty .
palswim
Ini juga terjadi pada saya di bawah linux penuh; pada beberapa saran online, saya menambahkan ~/.inputrcfile - yang membatalkan semua default linux mint. Anda dapat mendapatkannya kembali dengan menambahkan $include /etc/inputrcbagian atas ~ / .inputrc Anda (dengan anggapan bahwa / etc / inputrc adalah inputrc seluruh sistem Anda, yang ada di Linux Mint)
user208769

Jawaban:

134

Menemukan solusi , mempostingnya di sini untuk anak cucu.

Tambahkan baris berikut ke ~/.inputrc( C:\cygwin\home\<username>\.inputrc):

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Setelah selesai, Anda dapat menekan C-x C-runtuk membaca kembali .inputrcfile untuk sesi saat ini.

Hal-hal yang perlu diperhatikan jika Anda ingin penyesuaian serupa lainnya: Gunakan 5Adan 5Buntuk panah atas dan bawah, dan 2xuntuk versi bergeser.

Pemetaan kunci "resmi" dijelaskan dalam Manual Referensi Bash , tetapi untuk cara cepat menemukan pemetaan kunci, dalam bash:

  1. ketik Ctrl+V
  2. ketik urutan kunci yang Anda minati (misalnya, Alt+ ). Ini akan mencetak^[[1;3C
  3. lepaskan yang utama ^[dan ganti dengan \euntuk membuatnya\e[1;3C
  4. tempatkan nilai ini di .inputrcfile Anda .
Tom
sumber
Beberapa kode keyboard sama sekali tidak ditampilkan seperti <kbd> Shift </kbd> + <kbd> Enter </kbd>. Bagaimana cara menemukan kode keyboard ini melalui Mintty / Windows / Cygwin?
CMCDragonkai
14

Anda dapat memuat ulang file .inputrc melalui:

bind -f ~/.inputrc

Sumber

Kdt
sumber
2
Ini berguna, tetapi bukan jawaban yang benar untuk pertanyaan - mungkin akan lebih baik sebagai komentar untuk jawaban lain?
Martin Thompson
Ditambahkan ke jawaban @ Tom di atas
dovetalk
7

Jika Anda menginginkan sesuatu yang akan berfungsi tanpa pengaturan lingkungan kustom, misalnya ketika bekerja pada akun bersama di server atau hanya untuk membatasi jumlah konfigurasi kustom yang digunakan, Bash memiliki built-in untuk ini yang berfungsi di Cygwin.

Yaitu Alt+ funtuk bergerak maju dan Alt+ buntuk bergerak mundur.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html

Costa
sumber
4
Terima kasih, meskipun saya mengetahui kunci-kunci itu dan menggunakannya. Saya juga hanya menggunakan tombol panah ketika itu nyaman dan tidak ingin mereka memuntahkan kode melarikan diri alih-alih melakukan hal yang waras dan memindahkan kursor.
Tom
0

Saat menggunakan rxvt dengan cygwin, saya menemukan solusi di tautan ini bekerja untuk saya: control_arrow_keys_in_rxvt .

Tambahkan baris berikut ke ~/.inputrc:

"\eOd": backward-word
"\eOc": forward-word
Peter Tran
sumber
Saat itulah lapisan tambahan mengubah kunci yang dikirimkan (tetapi tidak menjawab pertanyaan yang diajukan).
Nikana Reklawyks
0

Solusi ini juga berfungsi di msys2konsol:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Cukup tempatkan kombinasi tombol ini dalam .inputrcfile.

f0nzie
sumber