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?

Jawaban:



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.


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.


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.


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.


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.


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

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.