OS X Terminal setara dengan Ctrl + Kiri / Ctrl + Kanan

19

Di Windows dan Linux saya selalu bisa menekan ctrl+ atau ctrl+ untuk melewatkan kata ke kiri atau kanan di terminal. Dalam editor teks tampaknya itu + / berfungsi, tetapi tidak ada dadu di terminal. Saya telah mencari di Google dan tidak menemukan apa pun kecuali halaman Wikipedia yang mengklaim + B/ Fmelakukan pekerjaan itu, tetapi yang dilakukannya hanyalah mencetak karakter ∫ dan ƒ ke terminal saya (atau ı dan Ï jika saya tahan ). Ada ide?

Patrick Krecker
sumber

Jawaban:

12

Anda dapat menggunakan kunci, tetapi Anda harus memilih opsi untuk menggunakannya sebagai kunci "meta": teks alternatif

Setelah Anda melakukannya, + Fdan + Bakan berfungsi seperti yang Anda harapkan.

mipadi
sumber
Luar biasa ... ini telah membuatku gila untuk waktu yang lama. Terima kasih.
Robert S Ciaccio
2
Juga periksa apple.stackexchange.com/q/1391/115 untuk kemungkinan "kelemahan" dari opsi itu.
Martin Marconcini
Jawaban keren +1
Soner Gönül
12

Ini membuat saya gila juga, namun saya tidak ingin perbaikan spesifik Terminal karena saya tidak menggunakan Terminal, dan untuk dapat SSH ke dalam kotak OSX saya harus menggunakan ikatan kunci yang benar juga.

Juga, secara pribadi, saya tidak peduli tentang kunci seperti yang dibahas sebelumnya; Saya ingin mempertahankan kombinasi ctrl+ / yang biasa saya gunakan di Linux.

Untuk mengatasi masalah ini, saya menambahkan yang berikut ke ~/.profile:

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

Perhatikan dua yang pertama berlaku untuk bash di Terminal ; dua yang terakhir berlaku untuk bash di iTerm2 dan koneksi ssh masuk . Jangan tanya kenapa emulasi keyboard berbeda;)

Sebagai catatan, saya dapat menemukan apa kode kunci sebenarnya berkat petunjuk dari jawaban stackoverflow ini : Anda dapat menjalankan cat > /dev/nulluntuk memantau kode kunci yang tepat yang dikirim selama kombinasi tombol.

(Perhatikan bahwa bagi saya, ketika saya menjalankan cat > /dev/nulldan menekan ctrl+ itu menghasilkan ^[[1;5D. Kode kunci Anda mungkin berbeda , tetapi yang pertama ^[direpresentasikan sebagai \e, seperti yang ditunjukkan dalam contoh kode saya.)

BTW, jika Anda ingin melihat semua bash keybindings aktif, jalankan bind -p.

adamrmcd
sumber
Saya suka menggunakan xxduntuk memeriksa input keyboard. Anda dapat melihat karakter yang ditampilkan saat Anda mengetiknya, lalu xxdmemancarkan nilai dalam hex ketika Anda mengetik kembali.
Chris Page
Sempurna! Hanya apa yang saya cari :) Tidak pernah beruntung membuat pengaturan "App-spesifik" di atas, tetapi ini hanya berfungsi!
bisko
Pastikan kontrol + kiri / kanan tidak dipetakan ke "alihkan spasi" di sysprefs Anda> keyboard> shortcut> exposé. Saya tidak punya ruang lain yang terbuka, jadi sepertinya input keyboard saya tidak berfungsi.
sudo
6

Pada Mac OS X Lion 10.7, Terminal memetakan - / ke esc+ B/ Fsecara default, jadi ini sekarang merupakan bawaan untuk bash dan program lain yang menggunakan ikatan kunci yang kompatibel dengan emacs ini.

Chris Page
sumber
5

jika Anda tahu cara menggunakan vi, Anda juga dapat mengaktifkan mode edit baris vi yang digunakan set -o vidi Anda .bash_profileatau kapan saja di baris perintah. Kemudian Anda dapat beralih di antara perintah vi dan memasukkan mode. Jadi Anda bisa menekan escape, lalu gunakan perintah vi untuk menavigasi baris:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

Setelah Anda mencapai posisi yang benar, Anda dapat menggunakan perintah vi lainnya untuk masuk ke mode insert atau append, atau menghapus karakter satu per satu, dll.

Robert S Ciaccio
sumber
Saya tidak pernah tahu Anda bisa menggunakan 0 untuk memulai baris, saya selalu menggunakan ^
Jason Salaz
1
@vxjasonxv: ya, ^ pindah ke karakter non-spasi pertama, 0 pindah ke kolom pertama (yang mungkin sudah Anda perhatikan tetapi saya pikir saya akan membuangnya di sana untuk orang lain: P)
Robert S Ciaccio
1
OH WOW, BAHKAN LEBIH BAIK, saya belum menyadarinya! Ya ampun, fungsi itu (bukan spasi pertama) dari ^ selalu membuatku kesal. Terima kasih.
Jason Salaz
Tentu saja, ESC ^sangat bagus ketika Anda membutuhkannya, itu hanya mengganggu ketika Anda ingin melakukan sesuatu yang lain sepenuhnya :)
ocodo
3

Buka terminal, buka preferensi, keyboard. Pada daftar Anda akan menemukan "kursor ctrl kanan" dan "kursor ctrl kiri".
Ubah tindakan yang ditugaskan untuk masing-masing “\ 033f” dan “\ 033b”, dan Anda akan dapat menggunakan ctrl+ dan ctrl+ untuk bergerak, tanpa kehilangan tombol alt Anda.

Lalu
sumber
2

Tampaknya esc+ Bdan esc+ Fdipetakan secara default untuk menuju ke awal dan akhir kata. Meskipun, untuk sistem saya, Anda tidak dapat menahan esctetapi harus menekan kembali untuk setiap kata.

Derek Morrison
sumber
1
Esc tidak pernah menjadi pengubah, itu hanya masuk ke mode "Escape" ketika Anda menekannya, menganggapnya sebagai cara modal melakukan sesuatu, tidak seperti shift / ctrl / meta dll. (Dalam skema Readline bagaimanapun juga.)
ocodo
0

Versi terbaru dari OS memetakan ini ke Spaces. Bahkan jika Spaces Anda dimatikan, tombol pintas masih bisa mengalami hubungan pendek di lokasi tersembunyi ini:

Kunci kursor Terminal.app: nonaktifkan System Preferences -> Shortcuts -> Mission Control -> Pindahkan ke kiri spasi

Keith Knauber
sumber