Saya menggunakan Ctrl- ←dan Ctrl- →pada setiap sistem Linux tempat saya bekerja, tetapi kombinasi tombol ini tidak berfungsi secara bash pada Macbook Pro saya. Ini menjalankan Snow Leopard, dan saya menggunakan aplikasi Terminal bawaan.
Kombinasi tombol tampaknya tidak ditangkap oleh apa pun sebelum atau oleh Terminal, karena jika saya ssh ke salah satu server Linux saya, saya dapat menggunakan Ctrl- ←/ →untuk melompat ke kata berikutnya / sebelumnya pada baris perintah. Namun, ketika saya mencoba kombinasi tombol ini di bash di Macbook saya, saya hanya mendapatkan "C" untuk panah kanan dan "D" untuk panah kiri.
Ada ide tentang bagaimana saya bisa mendapatkan kunci ini untuk bekerja di darwin bash?
Jawaban:
OS X menggunakan kunci emacs yang mengikat default saya. Ini benar bahwa hampir setiap aplikasi pada OS X, itu agak bagus. Ini berarti hal-hal seperti Ca dan Ce adalah awal / akhir dari garis. Anda juga mendapatkan kata-kill-backward bagus dengan M-backspace, oh, dan kill-line dengan Ck.
Ini harus berarti bahwa di terminal Anda maju / mundur-kata terikat masing-masing ke Mf dan Mb (M = Meta = alt / option), namun itu tidak terjadi. Pada OS X maju / backword-word terikat ke M- → dan M- ← secara default.
Anda dapat mengubah perilaku ini dengan mengubah cara GNU Readline Library dikonfigurasi untuk akun Anda. Ini terjadi di
~/.inputrc
file Anda . Anda bisa mendapatkan daftar besar perintah yang mengikat denganman readline
serta dalam dokumentasi online seperti ini di sini. .Jadi untuk menjawab pertanyaan Anda, Anda ingin memetakan apa yang dilakukan Readline ketika ia melihat C- → dan C- do untuk melakukan apa yang dilakukan pada server linux Anda.
Sintaks untuk
~/.inputrc
file cukup sederhana untuk apa yang ingin Anda lakukan:key-sequence: action
.Ini harus menjadi apa yang Anda butuhkan untuk mendapatkan perilaku yang diinginkan:
Inilah halaman lain dengan binding berguna tambahan.
(Anda mungkin bisa menyalin / etc / inputrc dari kotak linux ke OS X ~ / .inputrc Anda)
sumber
\e[1;5C
dan\e[1;5D
juga memicuforward-word
danbackward-word
.masukkan
~/.inputrc
baris berikut:sumber
Hari-hari ini tampaknya bahwa urutan melarikan diri yang keluaran Ctrl-Arrows di terminal telah berubah. Inilah yang bekerja untuk saya pada hari ini (akhir 2018):
"\e[1;5C": forward-word "\e[1;5D": backward-word
Catatan: Anda selalu dapat mengetahui urutan pelarian aktual dengan mengetikkan
cat -v
Terminal, dan menekan Ctrl-Left Arrow atau Ctrl-Right Arrow. Ini adalah contoh keluaran untuk Ctrl-Left Arrow saya sendiri:^[[1;5C ^[[1;5C
Untuk menerjemahkan ke dalam
.inputrc
istilah, ganti tanda keluar^[
dengan\e
dan tempelkan hasilnya di dalam tanda kutip ganda.sumber
Seperti @ bhh1988 sebutkan, konfigurasi Mission Control mencegah Ctrl-Keys bekerja dengan tombol panah
bash
. Saya tidak ingin mengganggu pintasan tersebut, jadi saya menggunakan tombol Option (Alt) sebagai gantinya. Saat ini di Mojave menggunakan keyboard Jerman (tidak tahu apakah itu relevan) Saya memasukkan yang berikut ini.inputrc
untuk menggunakan Option-left-arrow dan Option-right-arrow untuk berpindah kata.sumber
UPDATE Jan 2020
Pada versi terbaru OSX, shell standarnya adalah
zsh
. Oleh karena itu mantra sihir untuk mendapatkan ctrl-arrowleft dan ctrl-arrowright berfungsi seperti yang diharapkan adalah sebagai berikut:(letakkan di Anda
.zshrc
)sumber