Bisakah tombol home dan end dipetakan saat menggunakan Terminal?


76

The homedan endkunci pada MacBook Pro dapat ditiru dengan fn + panah kiri atau fn + panah kanan. Atau ketika pengaturan tertentu diubah, dengan tombol Command (Apple) bukan fn.

Tak satu pun dari ini bekerja di Terminal.

Karena saya sering harus pergi ke awal atau akhir garis dan juga ingin melompat maju atau mundur dengan kata.

Bagaimana saya bisa melompati jalur di Terminal?

Jawaban:


64

Gunakan control+ auntuk HOME dan control+ euntuk END di Terminal.

Juga gunakan esc+ funtuk pindah ke awal kata berikutnya dan esc+ buntuk pindah ke awal kata saat ini . (Anda harus berhati-hati tentang saat ini dan selanjutnya)


2
sempurna! bagaimana dengan melompat-lompat dengan kata? (ctrl-kiri dan ctrl-kanan di windows)
at01

@ at01 Saya memperbarui jawaban saya.
Am1rr3zA

40
Siapa yang merancang kunci untuk Terminal?!?!
at01

4
Saya lebih suka menggunakan opsi + panah kiri dan opsi + panah kanan untuk pindah ke awal kata
Allan Jikamu

2
Ctrl + a dan Ctrl + e bekerja untuk saya, tetapi tanpa menggunakan pemetaan ulang penekanan tombol seperti yang diusulkan oleh begitu banyak orang di sini, saya lebih suka alternatif AlphaFighter dari Shift + Home dan Shift + End (Shift + Fn + panah kiri dan Shift + Fn + panah kanan pada keyboard MacBook Pro) untuk awal dan akhir baris.
John Rix

70

Untuk menjawab pertanyaan tentang cara mendapatkan awal atau akhir dari garis, tampaknya secara default Terminal memetakan kunci-kunci ini ke sana:

  • shift + home → awal baris, setara dengan kunci "home" di terminal normal
  • shift + end → end of line, setara dengan tombol "end" di terminal normal

Jika Anda ingin rumah dan mengakhiri bekerja dengan cara "normal" (dan tidak memerlukan shift), pergi ke [Terminal menu] → Preferensi → tab Profil (atau pengaturan pada beberapa versi OS X) → Sub-tab keyboard.

Kemudian modifikasi / tambahkan kunci-kunci ini menjadi "send string to shell" berikut ini

  • rumah: \033[H
  • akhir: \033[F

Anda bisa mendapatkan \033bagian dengan menekan tombol escape di dalam input dialog edit, jika Anda perlu menambahkannya.

Kemudian rumah dan akhir akan berfungsi seperti biasa lagi (phew).

Juga perhatikan bahwa "alt + ←" dan "alt + →" secara default di peta terminal ke kata kiri dan kata kanan, kombo lain yang berguna untuk diingat.

Dalam versi Mac OS X yang lebih baru, jika layar terminal bergeser ke atas atau ke bawah ketika Anda menekan tombol home / end, tombol home mungkin perlu diatur ke \033[1~dan tombol end \033[4~untuk mendapatkan hasil yang Anda inginkan (tidak diperlukan shift) .

Jangan ragu untuk memodifikasi jawaban ini untuk menambahkan binding kunci yang lebih berguna, karena ini adalah wiki komunitas.


5
\ 033 [H dan \ 033 [F untuk rumah dan akhir tidak bekerja untuk saya; namun \ 001 dan \ 005 melakukannya. Anda dapat memasukkan kode-kode ini dalam dialog edit dengan menekan ctrl-A dan ctrl-E. Saya menggunakan zsh, saya tidak yakin apakah itu membuat perbedaan.
JW.

shift + home / end melakukan pekerjaan
isaias-b

1
Sudah mencoba untuk mencari tahu ini untuk sementara waktu, ini menyelamatkan saya!
Paul Gray

Ini berfungsi baik ketika Anda berada di aplikasi terminal aktual secara lokal. Namun, ketika Anda ssh'd ke mesin macOS, ini sepertinya tidak berfungsi lagi. Bagaimana menyiasati ini ?!
Ahi Tuna

2
@AhiTuna SSH hanyalah koneksi ke sesi terminal, bukan koneksi ke terminal emulator. Opsi input selalu ditentukan oleh emulator terminal apa pun yang Anda gunakan.
Bachsau

39

Sepertinya Anda mencari bantuan menggunakan readline dan bash, berikut adalah daftar hal-hal keyboard yang dimodifikasi dari: http://www.math.utah.edu/docs/info/features_7.html#SEC45

Ctrla Pindah ke awal baris.
Ctrle Pindah ke akhir baris.
Escf Maju satu kata.
Escb Pindah mundur satu kata.
Ctrll Bersihkan layar, cetak ulang garis saat ini di bagian atas.

Ctrlk Bunuh teks dari posisi kursor saat ini ke akhir baris.
Escd Bunuh dari kursor ke akhir kata saat ini, atau jika antara kata, ke akhir kata berikutnya.
EscDel Bunuh dari kursor awal kata sebelumnya, atau jika antara kata-kata, ke awal kata sebelumnya.
Ctrlw Bunuh dari kursor ke spasi putih sebelumnya. Ini berbeda daripada EscDelCtrla karena batas kata berbeda.

Ctrld Hapus karakter di bawah kursor.
Ctrl_ Membatalkan hal terakhir yang Anda lakukan. Anda dapat membatalkan semua jalan kembali ke baris kosong.

Dan, inilah cara untuk menarik kembali teks ke dalam baris. Yanking berarti menyalin teks yang paling baru-baru ini dibunuh dari buffer kill.

Ctrly Tarik kembali teks yang terakhir terbunuh ke dalam buffer di kursor.
Escy Putar cincin bunuh, dan tarik bagian atas yang baru. Anda hanya dapat melakukan ini jika perintah sebelumnya adalah Ctrlyatau Escy.


ini tidak ternilai - terima kasih - Saya berharap ini tersedia sebagai file yang dapat dicetak di suatu tempat!
matt b

Saya menyadari itu tidak cukup "dioptimalkan", tetapi; File -> Cetak?
Jason Salaz

Wow, ini sangat canggung dibandingkan istilah di linux .. cara apa pun untuk memetakan ulang omong kosong ini?
btk

Yap, coba halaman manual Bash. (Saya tidak tahu bagaimana melakukannya sendiri.)
SilverWolf

6

Bagi mereka yang lebih suka menggunakan tombol panah, menekan fnShift+ Left Arrowakan membawa Anda pulang pada baris perintah. Demikian pula, fnShift+ Right Arrowakan membawa Anda ke akhir.


6

Anda dapat memindahkan satu kata setiap kali dengan option+ leftdan option+ right.

Mengenai penggunaan homedan end, binding standar Terminal adalah sebagai berikut:

  • shift+ home→ lompat ke awal baris
  • shift+ end→ lompat ke ujung garis
  • home → gulir ke atas buffer gulir-kembali
  • end → gulir ke bagian bawah buffer scroll-back

Di banyak aplikasi terminal lainnya (pada beberapa platform), pasangan yang dimodifikasi dan tidak dimodifikasi dibalik (yaitu telanjang homedan enddigunakan untuk melompati garis saat ini dan versi yang dimodifikasi (apakah dengan shiftatau sesuatu yang lain) digunakan untuk menavigasi buffer gulir-belakang ). Anda dapat membalik ikatan Terminal menjadi seperti itu jika Anda ingin dengan melakukan hal berikut:

Buka menu Terminal → Preferensi → tab Pengaturan / Profil → Sub-tab keyboard.

Kemudian modifikasi pasangan kunci-tindakan menjadi yang berikut:

  • ↖︎: Kirim teks: \ 033 [H
  • ⇧↖︎: Gulir ke Atas
  • ↘︎: Kirim teks: \ 033 [F
  • ⇧↘︎: Gulir ke Bawah

Catatan: \ 033 dimasukkan ke dalam kotak teks yang akan dikirim dalam dialog Edit dengan menekan tombol escape.

Sementara di sana, Anda mungkin ingin menukar ikatan yang dimodifikasi dan tidak dimodifikasi dengan cara yang sama page updan page down, untuk menjaga agar semuanya konsisten: menekan tombol navigasi dengan shiftmewakili perintah ke Terminal itu sendiri (untuk menavigasi buffer gulir-belakang seperti dokumen), sambil menekan yang tanpa mengirim kunci-tekan sampai apa pun yang berjalan di dalam (misalnya bash, less, nano, screen, dll). Pasangan kunci-tindakan untuk itu adalah:

  • ⇞: Kirim teks: \ 033 [5 ~
  • ⇧⇞: Gulir Halaman ke Atas
  • ⇟: Kirim teks: \ 033 [6 ~
  • ⇧⇟: Gulir Halaman ke Bawah


4

Pemetaan homedan endkunci dengan fungsi yang Anda inginkan akan dengan mudah menyelesaikan masalah.

Banyak jawaban telah diposting, tetapi jika Anda menggunakan zsh, Anda dapat mengatur homeke:

\001

dan diatur endke:

\005

dengan mengklik preferensi - profil - keyboard.


Saya mencoba ini juga tapi kemudian istirahat Rumah dan Akhir di vim :( Anda dapat memetakan mereka untuk apa Alfredo Cardigliano disarankan: Key: ↖ Aksi: \ 033OH Key: ↗ Aksi: \ 033OF
curlingdude

Ini bekerja dengan baik untuk saya! Saya hanya menggunakan Nano, jadi tidak ada masalah di sini.
Sterling Bourne

Ya, ini berfungsi, tetapi tidak menyelesaikan masalah secara umum. Saya pindah dari bash ke zsh dan saya digunakan FN-SHIFT-LEFT / RIGHT .. ini menyelesaikan masalah saya: stackoverflow.com/questions/8638012/…
vlk

1

Ini adalah cara paling efektif untuk membuatnya bekerja juga dengan vim. Buka Terminal -> Preferensi -> Profil -> Keyboard dan tambahkan:

Kunci: ↖ Tindakan: \ 033OH

Kunci: ↗ Tindakan: \ 033OF


1

Saya ingin memberikan solusi alternatif untuk masalah ini. Ini berfungsi baik jika Anda adalah pengguna vi. Ikatan Kunci Vim di Terminal menyediakan cara untuk menggunakan terminal Anda dengan gaya vim. Anda dapat melakukan ini melalui mengetik set -o vidi terminal dan merasa bebas untuk memasukkannya .bash_profilejika Anda mau. Setelah ini, terminal Anda secara efektif adalah editor vim. Anda dapat menggunakan esckunci untuk masuk ke mode perintah dan berjalan-jalan dengan cara vim. Misalnya, 0mengarahkan Anda ke awal dan $membawa Anda ke akhir. Anda juga dapat menggunakan Idan Auntuk pergi ke awal dan akhir dan masuk ke mode pengeditan segera. wdan bmembiarkan Anda bergerak maju dan mundur dengan satu kata. Dan jika Anda mencoba masuk ke mode visual dengan menekanv, Anda akan diberikan editor vim dan teks yang Anda miliki ketika meninggalkan editor ini akan dieksekusi di terminal.

Harap diperhatikan bahwa pengikatan kunci vim ini akan membatalkan semua hotkey yang Anda pelajari dari jawaban lain.


0

inilah daftar dalam bentuk yang dapat dicetak, seperti yang diinginkan :)

http://pastebin.com/uCqwn7qs

Saya juga memperbaiki "bug" dalam deskripsi. Inilah yang awalnya bisa Anda baca dalam instruksi:

ESC-d Bunuh dari kursor awal kata sebelumnya, atau jika antara kata-kata, ke awal kata sebelumnya.

Baunya tidak sedap seperti kesalahan potong-dan-tempel, karena kedua kalimat parsial mengatakan hal yang sama. Bercerita dari logika sederhana, babak pertama harus benar-benar membaca "dari kursor ke awal kata saat ini".


0

... bagaimana dengan melompat-lompat dengan kata? (ctrl-kiri dan ctrl-kanan di windows)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
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.