Bash: Bagaimana cara memindahkan kursor ke kiri kata per waktu?


14

Di OSX saya hanya bisa menahan optiontombol dan tekan tombol kursor kiri sampai saya mendapatkan kata yang perlu saya edit (atau di Vi saya hanya bisa menekan b, tapi saya belum bisa menemukan cara melakukan ini di Terminal namun...


Anda dapat melihat daftar lengkap binding readline di halaman ini , termasuk instruksi bagaimana menyesuaikan binding Anda sendiri.
jasonwryan

Jawaban:


26

Untuk mengatur kunci mengikat: Pertama Anda harus mencari tahu apa kode kunci Ctrl+ Lefturutan tombol menciptakan. Cukup gunakan perintah catuntuk mematikan gangguan dengan ikatan kunci yang ada, dan kemudian ketik urutan kunci. Di sistem saya (Linux), ini terlihat seperti itu:

$ cat
^[[1;5D

Tekan Ctrl+ duntuk keluar dari kucing. Sekarang Anda telah mengetahui bahwa Ctrl-Left mengeluarkan 6 kode kunci:

  • Escape (^ [)
  • [
  • 1
  • ;
  • 5
  • D

Sekarang Anda dapat mengeluarkan perintah bind:

bind '"\e[1;5D": backward-word'

6
Anda dapat menambahkan `` "\ e [1; 5D": kata mundur '' ke $ HOME / .inputrc untuk efek permanen jika Anda mau.
llhuii

@ llhuii +1, saya lupa menyebutkan itu!
daniel kullmann

2
+1 untuk cara paling fleksibel untuk mengikat kombinasi tombol sembarang tempat!
Irfy

14

Fungsi bash yang Anda inginkan adalah backward-word. Anda dapat menjalankan bind -q backward-worduntuk mendapatkan daftar kunci yang terikat pada fungsi itu. Satu pengikatan umum adalah Esc+b

Juga, banyak terminal mendukung Ctrl+ Left(hotkey yang sama yang dapat Anda gunakan di X untuk melompat mundur dengan kata)


1
Ok, itu mengembalikan backward-word can be invoked via "\eb".tetapi bagaimana saya mengikat kontrol + Kiri bukan Esc + b? Juga, satu kekurangan untuk Esc + b yang sudah bisa saya lihat adalah bahwa saya harus berhenti pada tombol Esc setiap kali saya bisa kembali kata, tidak ada cara yang lebih baik?
nipponese

1
Apakah ada cara yang lebih baik? Secara alami: set editing-mode vi:)
jasonwryan

3
@nipponese "esc b" juga dapat digunakan pada keyboard sebagai ALT-b. Ini mungkin perlu secara khusus alt kiri atau kanan tergantung pada konfigurasi Anda, jadi cobalah keduanya.
Acak 832

8

Pintasan kunci default di Bash backword-wordadalah Alt+ b. Hasil yang sama dapat dicapai dengan Esc+ b. Anda harus mencobanya sebelum mengedit keybindings Anda.

Gunakan bindperintah untuk mengedit atau bind -q [name]untuk mendapatkan keybind saat ini dari tindakan tertentu.


2
... and forward -Alt + f
Putnik
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.