Ctrl + masalah panah kiri / kanan

25

Setelah sistem terakhir memperbarui perintah ctrl + kiri / kanan pada terminal zsh tidak melakukan apa-apa. Juga ctrl + u memiliki sesuatu yang salah karena biasanya perintah itu menghapus dari kursor ke awal baris, sementara sekarang hapus seluruh baris .. Ada yang tahu bagaimana menyelesaikan masalah ini? Terima kasih semua.

riskio
sumber
Apakah Anda menemukan jawaban yang dapat diterima? Saya pikir jawaban Goncalo luar biasa.
Léo Léopold Hertz 준영

Jawaban:

44

FWIW, ini yang bekerja pada lingkungan saya (rhel5.x) menggunakan default zsh.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
Goncalo
sumber
5
^[^[[Ddan ^[^[[C, masing-masing, untuk OSX
Jon z
1
Dikonfirmasi, proposal Goncalo juga berfungsi di Debian 8.5. Saya hanya ingin tahu mengapa kode ini tidak terpasang .zshrcsecara bawaan.
Léo Léopold Hertz 준영
Bekerja seperti pesona di Ubuntu Artful, terima kasih!
Konrad Garus
Jika ada yang ingin menggunakan $terminfoalih-alih urutan melarikan diri: kunci $terminfo[kLFT5]dan $terminfo[kRIT5]bekerja untuk saya
Griddo
14

Ctrl + U kemungkinan besar karena Anda memiliki kursor di akhir baris. Kedua, versi Gentoo mana yang Anda rujuk sebagai "pembaruan sistem terakhir"?

Dan apa yang Anda ingin lakukan ctrl + kiri / kanan?

  • Tambahkan ke konfigurasi zsh:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • Dan dari memo lama saya temukan (mungkin membantu):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • atau lihat tautan ini , yang seharusnya membantu Anda?

Catatan: Jika konfigurasi berfungsi tetapi kunci yang seharusnya tidak melakukan apa yang Anda inginkan itu mungkin karena definisi kunci berbeda dari Anda dan milik saya, lakukan: cat > /dev/null dan tekan tombol yang Anda ingin hasilkan dan sesuaikan.

Torx
sumber
1
"Ctrl + U kemungkinan besar karena Anda memiliki kursor di akhir baris" tentu saja maksud saya ketika kursor saya di tengah. "Dan apa yang Anda ingin lakukan ctrl + kiri / kanan?" biasanya ctrl + panah kiri: lewati kata ke kiri dll ...
riskio
Dan shell / terminal mana yang Anda gunakan? Pastikan Anda menggunakan Emacs atau terminal apa pun yang biasanya Anda gunakan dan / bin / bash? apakah Anda menjalankan melalui layar?
Torxed
1
silakan baca pertanyaannya di sana ..
riskio
1
@Masi Tidak yakin, saya menjawab dua tahun sebelum dia dan jawaban kami hampir identik, saya hanya menunjukkan dua cara berbeda untuk melakukannya .. dan Anda dapat menggabungkan keduanya untuk menggabungkan apa yang ditulisnya.
Torxed
1
@Masi Yang saya tahu adalah bahwa saat itu (ingat, 2010-2012 .. Sudah lama sekali) kedua (dan kombinasi itu) bekerja untuk saya pada banyak sistem yang berbeda. Saya menggunakan Unix dan Linux (dan dia menggunakan Gentoo, OS rilis yang dapat diputar). Dan masih ada jejak ini pada banyak contoh .. Seperti repositori ini . Sekarang, sekali lagi, saya tidak begitu yakin mengapa tetapi bekerja pada setidaknya dua mesin jadi saya pikir saya akan membagikannya. Dan yakin itu lebih jelas HARI INI, dan saya tidak keberatan dia mendapatkan semua suara. Ini adalah pos lawas.
Torxed
5

Apa yang berfungsi tidak langsung bergantung pada distro (Gentoo, Debian, RHEL dll.) Atau shell (ZSH, KSH, BASH) - tergantung pada yang terminal emulatordigunakan, dan pengaturannya: konsole, terminator, urxvt, lx-terminal dll. Distro mungkin penting jika menggunakan konfigurasi shell standar yang berbeda (fx .zshrc), dan jika menggunakan shell yang berbeda konfigurasi shell pada distro itu mungkin sudah menanganinya.

Berikut adalah beberapa solusi khusus emulator terminal:

urxvt / rxvt-unicode (dan mungkin yang lain):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

terminator, konsole, dan xterm (dan mungkin yang lain):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Untuk pendekatan yang lebih umum Anda memulai terminal Anda, tekan CTRL-V diikuti oleh kombinasi tombol yang Anda inginkan kode melarikan diri (nama) dari - dalam hal ini kombinasi kunci CTRL-leftarrow dan CTRL-rightarrow - dan masukkan output untuk masing-masing kombinasi tombol di antara dua kutipan.

miyalys
sumber
1
Apakah Anda mencoba saran CTRL-V? Mungkin terminal Anda mengartikan penekanan tombol secara berbeda, jadi kuncinya perlu terikat pada "simbol" yang berbeda?
miyalys
1
Saya memperbarui jawaban saya. Ada beberapa solusi tergantung pada yang terminal emulatordigunakan. Distro atau shell tidak masalah. Itu mungkin juga mengapa tidak ada di .zshrc, karena apa yang bekerja untuk satu terminal emulator tidak bekerja untuk yang lain. Tapi itu mungkin bisa diselesaikan jika zshrc fx. baca variabel lingkungan $ TERM dan terapkan pengaturan bindkey berbeda berdasarkan hasilnya.
miyalys
2

Terpecahkan.

Terminal yang digunakan: Konsole .

Untuk mengatasinya: klik kanan pada terminal (atau pengaturan di menubar) -> ubah profil saat ini -> pemetaan keyboard -> ubah ke Default (xfree4)

riskio
sumber
bahkan tidak benar-benar terkait dengan zsh tetapi tentu saja, perbaikan adalah perbaikan.
Torxed