Bagaimana cara mengubah pintasan kata sebelumnya / berikutnya di bash?

20

Bagaimana cara mengkonfigurasi Ctrl-Kiri dan Ctrl-Kanan sebagai pintasan kata sebelumnya / berikutnya untuk bash (saat ini alt-b dan alt-f)?

ripper234
sumber
Um, bukankah pertanyaan ini berbunyi?
Gilles 'SO- stop being evil'
@Gilles - Saya pikir saya menanyakan hal yang sama sebelumnya, ya, maaf. Ditutup aslinya sebagai dup (karena itu milik lebih dari di sini di Super User).
ripper234

Jawaban:

26

Jawaban yang benar tergantung pada terminal mana yang Anda gunakan.

Untuk Terminal Gnome atau versi xterm terbaru, masukkan ini ke ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

Untuk Putty, letakkan ini di ~ / .inputrc Anda:

"\eOC": forward-word
"\eOD": backward-word

Untuk rxvt, letakkan ini di ~ / .inputrc Anda:

"\eOc": forward-word
"\eOd": backward-word

Anda mungkin bisa melepaskan semua itu di ~ / .inputrc.

Dalam semua kasus, Anda juga harus meletakkan ini di ~ / .bashrc (atau ~ / .zshrc) Anda:

export INPUTRC=~/.inputrc

Jika itu tidak berhasil, atau Anda memiliki terminal yang berbeda, buka terminal Anda dan ketik Ctrl+ V Ctrl+ ->. Kemudian gunakan itu sebagai ganti "\e[1;5C"atau di "\eOC"atas. Ulangi untuk Ctrl+<- .

Perhatikan bahwa Anda perlu menulis urutan pelarian keyboard menggunakan sintaks inputrc , mis

  • \C berarti kontrol
  • \eberarti escape (yang muncul seperti ^[saat mengetiknya menggunakan Ctrl + V di atas)
Mikel
sumber
Ctrl + V, Ctrl -> print "^ [[1; 5C", dan saya menggunakan terminal gnome.
ripper234
2
Jadi coba "\e[1;5C": forward-word. Dan lakukan Ctrl+ Vuntuk Ctrl+ Left Arrowjuga.
Mikel
Terima kasih, bekerja seperti pesona. Perlahan tapi pasti, saya akan belajar berenang di linux. Mengapa mereka harus membuatnya sangat tidak intuitif? (Anda harus mengakui ctrl-kiri, ctrl-kanan adalah pilihan yang lebih baik)
ripper234
1
Jika Anda pikir Linux tidak intuitif untuk memulai, coba instal FreeBSD atau bahkan Solaris. Memiliki bash sebagai shell awal Anda adalah mimpi. Juga, karena keyboard tidak selalu memiliki tombol Panah, Emacs, dan karenanya, bash pintasan dukungan untuk itu juga. Coba gunakan Ctrl-b dan Ctrl-f untuk sementara waktu.
penguin359
2
Keindahan sistem UNIX / Linux adalah mudah untuk berpindah pengaturan. Setelah Anda mengonfigurasi program favorit sesuai keinginan Anda, cukup salin saja. Saya sebenarnya menggunakan kontrol versi untuk file direktori home saya seperti .inputrc, .bashrc, .vimrc, dan sebagainya. Saya menggunakan mercurial untuk mengkloning dan memperbarui semua pengaturan direktori home saya di antara komputer. Saya juga berencana pada beberapa titik untuk menerbitkan repo saya sehingga orang lain dapat membagikan semua kerja keras saya.
penguin359
3

Jika Anda menggunakan ZSH, Anda perlu menggunakan metode yang berbeda, karena, mengutip bagian yang relevan dari panduan ZSH ArchLinux :

Zsh tidak menggunakan readline #like bash #, melainkan menggunakan zle sendiri dan lebih kuat.

Itu tidak membaca / etc / inputrc atau ~ / .inputrc.

Setelah membaca panduan itu, saya pikir saya memerlukan sumber ZSH yang modren untuk mendapatkan ide umum tentang bagaimana melakukan ini, dan jadi saya menemukan file oh-my-zsh yang menggambarkan perilaku yang saya inginkan, saya menyalin bagian-bagian yang relevan. ingin ke ~ / .zshrc saya:

bindkey -e #Use emacs mode, it's more sane for beginners
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
# Also, If you want to copy paste this into your zshrc,
# I'm pretty sure you would have to add this at the top : 
# setopt interactive_comments
mirandalol
sumber
saya mencoba ctrl + rightarrow, tetapi tidak melakukan perjalanan sepatah kata pun pada Mac
TomSawyer