Kunci rumah tidak berfungsi di terminal


13

Saya menggunakan Terminal GNOME 2.7.3 dan zsh 4.3.9 (x86_64-unknown-linux-gnu)

Homedan Endtidak bekerja Tidak ada yang terjadi dan tidak ada yang ditampilkan ketika saya menekan mereka. tetapi mereka bekerja ketika saya menekan shift + Home(Menggulir ke awal keluaran shell.) dan juga bekerja di program GUI lainnya. Saya mencari di Google dan mencoba yang berikut. Tidak ada perubahan :(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PS: Ketika saya berada di tab terakhir dan tekan Ctrl + pagedownsaya ;5~dicetak di layar. Apakah itu memberi petunjuk?


Apakah Anda memiliki .inputrcdi direktori home Anda? Apakah ini terjadi dengan pengguna yang baru dibuat? Apakah ini selalu terjadi, atau mulai suatu hari?
bahamat

Tidak, saya tidak punya .inputrc. Saya tidak mengizinkan untuk membuat pengguna baru. Ini selalu seperti itu. Saya hidup dengan ctrl +adan ctrl+e.
balki

1
Saya kira dalam hal ini saya tidak akan menyarankan ctrl+a& ctrl+e;-)
bahamat

Jawaban:


3

Saya menggunakan fedora sekarang, namun saya sarankan Anda untuk membaca wiki Archlinux dengan hati-hati , semuanya: Kunci Home dan End tidak berfungsi .

Apa yang saya lakukan untuk memperbaikinya:

  1. Tekan Ctrl-V Home, urutan lolos untuk tombol Home dicetak. Hal ini tidak \e[4~ dan \e[1~seperti yang saya harapkan untuk menjadi dengan melihat /etc/inputrc. Itu [Hdan[F

  2. Ekstrak info terminal infocmp $TERM >terminfo.src

  3. Buka file itu untuk diedit, seperti vim terminfo.src, cari khomedan kenditu ditugaskan untuk sesuatu, katakanlah khome=\E[1~dan kend=\E[4~yang tidak berfungsi dalam kasus ini. hapus dan ganti dengan urutan yang Anda temukan di langkah # 1, jadi bagi saya, setelah mengedit itu: khome=\E[Hdan kend=\E[F.

  4. Jika Anda ingin bermain aman, pastikan [Fdan [H(atau urutan apa pun yang baru saja Anda gunakan) tidak ditugaskan untuk hal lain atau hal-hal akan kacau!

  5. jalankan tic terminfo.srcyang menciptakan ~/.terminfodirektori.

  6. Di atas .zshrcsebelum dan semua perintah lainnya, masukkan:export TERMINFO=~/.terminfo

Buka jendela terminal baru dan Anda harus baik-baik saja, rumah dan akhir harus bekerja sekarang.

PS: Metode bindkey secara teori seharusnya bekerja dan lebih mudah, tetapi tidak untuk saya.


6

Urutan escape yang dikirim oleh fungsi dan tombol kursor terdiri dari karakter escape diikuti oleh karakter yang dapat dicetak. Tekan Ctrl+ Vlalu Home. Ini akan menyisipkan urutan melarikan diri secara harfiah. Kemudian tambahkan bindkeyinstruksi ke blog Anda ~/.zshrc.

Instruksi ini cenderung (perhatikan O, bukan 0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line

tidak ada yang dicetak ketika saya menekan Ctrl lalu Home. Tidak ada yang terjadi. Sudah mencoba mengubah 0 menjadi O juga.
balki

@balki Ini Ctrl + V, bukan Ctrl. Saya baru menyadari ada masalah pemformatan dalam jawaban saya.
Gilles 'SO- stop being evil'

Terima kasih! :) Saya sekarang terbiasa dengan ctrl + adan ctrl +edan mode vi
balki

5

Saya menemukan saya harus menekan CTRL-v, melepaskan, lalu tombol Homeatau Enduntuk mendapatkan urutan ^[[Hdan ^[[Funtuk masing Home- Endmasing. Menambahkan baris berikut ke .zshrcfile memecahkan masalah bagi saya:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line

2

Tambahkan baris ini ke /etc/zshrcdan kemudian lakukan source /etc/zshrc(diambil dari sini )

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal

2

Jawaban ini menjelaskan masalah saya sangat bagus dan memperbaikinya.

/programming//a/686458/5472892

TL; DR: Ubah jenis terminal Putty Anda dari default xtermmenjadi linux.

Mungkin seseorang bisa menggunakannya juga.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.