Terminal Mac OS X: Opsi peta + delete ke “backward delete word”

232

Mencoba memetakannya dari Preferensi -> Pengaturan -> Keyboard, tetapi kotak kombo "kunci" hanya memiliki "hapus maju" tetapi tidak ada "hapus". Keyboard saya di sisi lain hanya memiliki "delete" dan tidak ada "forward delete"!

Apakah ada cara lain untuk melakukannya kecuali dari preferensi?

ibz
sumber
Dengan "kata hapus mundur", maksud Anda kunci backspace? Saya tidak mengetahui adanya keyboard Apple terbaru yang memiliki tombol hapus.
Sören Kuklau
Dengan "kata hapus mundur" maksud saya persis itu - untuk menghapus seluruh kata mulai dari kursor mundur. :) Macbook terakhir memiliki kunci berlabel "delete", tetapi berfungsi sebagai backspace.
ibz
Saya menghadapi masalah yang sama. keyboard memiliki penghapusan mundur tetapi tidak dapat digunakan sebagai mengikat di Terminal.app.
knoopx
Bagi saya, pertanyaan Anda layak mendapat jutaan upvotes. Itu banyak membantu saya. Sebelumnya, saya adalah Ubuntu. Sekarang, ini membuat hidup saya lebih mudah di Mac OS juga. Terima kasih.
doptimusprime

Jawaban:

424

Aktifkan kunci opsi sebagai kunci meta

  1. Pergi ke Terminal> Preferences> Profiles>Keyboard
  2. Periksa Use option key as meta key.

Gambar

Pada macOS High Sierra 10.13.6, ditangkap pada 23 Oktober 2018.

Ilustrasi jendela untuk mengaktifkan tombol opsi sebagai kunci meta

Catatan

Banyak aplikasi (termasuk bash dan tcsh) memperlakukan Meta-Delete sebagai "kata penghapusan ke belakang."

Andru Luvisi
sumber
32
Itu di bawah Terminal preferensi> pengaturan> keyboard, tepat di bagian bawah.
Jon
16
Kenapa ini tidak default ?!
Ross Hambrick
8
Di Yosemite, pengaturan ini sekarang berada di bawah Preferensi -> Profil -> Keyboard. Sepertinya Anda harus mengubah / mengaturnya untuk setiap profil.
palimpsestor
6
Pada keyboard non-AS, tombol opsi sering diperlukan untuk mendapatkan karakter tertentu (mis. Pipa '|' cukup penting di shell). Dalam hal ini <Esc> b dan <Esc> f yang disebutkan dalam jawaban lain mungkin merupakan solusi terbaik?
Touko
8
Sayangnya, ini kontra-produktif untuk programmer dengan keyboard asing yang perlu menggunakan kunci opsi untuk mendapatkan simbol khusus seperti {, karena itu tidak akan berfungsi ketika kunci opsi digunakan sebagai kunci meta.
Magne
74

Terminal OS X menjalankan bash, yang mencakup dukungan readline. Ikuti saran Glomek dan beri tahu terminal untuk menggunakan opsi sebagai kunci meta (atau gunakan lain Esc) dan kemudian Anda punya banyak opsi praktis: Ctrl+ wmenghapus kata sebelumnya (seperti halnya Meta + hapus seperti yang disebutkan), tetapi Anda juga dapat menggunakan Meta + f dan Meta + b untuk berjalan maju dan mundur melalui kata-kata, Ctrl+ adan Ctrl+ eke awal dan akhir baris, Ctrl+ kmenghapus (membunuh) dari kursor ke akhir baris, dan banyak lagi.

Lihat http://www.bigsmoke.us/readline/shortcuts untuk tabel referensi kecil yang bagus.

nadafigment
sumber
3
Bagaimana ini "berguna"? Sisa sistem menggunakan deletekualifikasi untuk menghapus kata-kata.
idrougge
Apakah mungkin untuk memiliki "garis hapus" juga?
wenbert
1
Readline bagus, tetapi ini tidak membantu OP. Ctrl + w menghapus WORD (dipisahkan oleh spasi putih), bukan kata (dipisahkan oleh tanda baca + spasi putih). Dengan kursor di akhir cat .git/refs/heads, Ctrl-w menghasilkan cat. Meta + delete results incat .git/refs/
idbrii
@nadafigment, 'a' dan 'e' adalah singkatan?
Pacerier
63

Hapus kata yang kembali:

Rkpt.

Shai
sumber
2
baik setelah membaca ini saya menemukan bahwa "hapus kata maju" adalah ctrl + k (dengan coba-coba). sekarang saya bertanya-tanya mengapa ada begitu sedikit dokumentasi tentang semua ini.
pemenang n.
8
Ctr-k menghapus semua di depan, bukan hanya satu kata, bukan?
Shai
ini berfungsi di mac saya. apakah ini berfungsi di ubuntu linux juga?
user391339
1
Ctrl + w menghapus WORD (dipisahkan oleh spasi putih), bukan kata (dipisahkan oleh tanda baca + spasi putih). Dengan kursor di akhir cat .git/refs/heads, Ctrl-w menghasilkan cat. Meta + hapus hasil dalamcat .git/refs/
idbrii
24

Secara default meta backspace melakukan kata mundur yank di sebagian besar shell. Jika Anda menekan escape dan kemudian tekan backspace, itu cukup berhasil di mana-mana.

Dustin
sumber
3
Fantastis, itu tidak memerlukan pengaturan tambahan. Saya perhatikan <Esc> bdan <Esc> fjuga bekerja untuk melompat mundur atau maju satu kata.
joeytwiddle
1
Saya suka <ALT> + PANAH lebih. ESC tidak mengizinkan klik terus menerus pada b atau f.
Vitali Pom
1
Saya telah menggunakan <ALT> + PANAH untuk bergerak, tetapi saya menemukan bahwa tidak ada cara untuk menghapus dengan cara yang sama. Pendekatan CTRL + W yang disebutkan di atas tidak berhenti pada karakter non-kata dengan cara yang sama dengan <ALT> + ARROW, sehingga menghapus semuanya hingga spasi. Cara apa pun untuk menghapus menggunakan deteksi batas yang sama seperti <ALT> + ARROW akan dihargai
Rene Wooller
18

⌃W(kontrol + W) tidak sama dengan meta + delete (ESC + delete jika Anda belum mencentang opsi penggunaan sebagai kunci meta) meta + delete akan memperlakukan / _sebagai pembatas kata yang ^Wakan menganggap ruang sebagai pembatas.

mis. menggunakan ESC + Bakcspace on (kursor di akhir)

rm /dira/dirb/file1

memberi

rm /dira/dirb/

sementara ^ W pada yang sama akan memberi

rm

Jadi lebih baik menggunakan \ 033 \ 177 daripada ^ W ketika mendefinisikan memodifikasi profil terminal. Dengan begitu Anda benar-benar memetakan ⌥⌫ pada apa yang dilakukan esc⌫ dan Anda tetap memiliki ^ W untuk menghapus kata berdasarkan pembatas ruang.

Saya ingin sekali dapat memposting gambar tentang bagaimana melakukan ini tetapi sebagai pemula saya tidak bisa.

lihat komentar bouke untuk melihat bagaimana memodifikasi profil terminal.

Stephane Gasparini
sumber
5
Bagi mereka yang ingin melakukan ini iterm2, Anda bisa pergi ke Preferensi> Kunci> tambahkan Pemetaan Kunci ⌥⌫untuk mengirim kode hex 0x1B 0x7F. 🍻
qix
Bagaimana Anda mengetahui bahwa \033\177itulah yang Anda inginkan untuk "menghapus sebagian kata"?
adiabatic
memang Anda hanya perlu menekan urutan tombol yang Anda inginkan dalam dialog Preferensi Terminal. Preferensi → Profil → tab Keyboard → tombol + lalu pilih modifier "option" dan kunci "⌫ delete" lalu pilih bidang teks dan tekan tombol escape kemudian tekan tombol ⌫ dan selesai. Esc + ⌫ melakukan hal yang sama dengan ⌥⌫
Stephane Gasparini
14

Di profil Terminal Anda, Anda dapat mengikat ⌥⌫ (opsi + hapus) ke ⌃W (kontrol + W), sehingga berfungsi serupa dengan aplikasi lain.

Terminal Profile Pengaturan keyboard

Bouke
sumber
stty harus dipetakan ke werase (perilaku default) agar ini berfungsi. Gunakan stty -a pada baris perintah untuk melihat bagaimana pemetaan diatur.
natersoz
4

Command Editing Shortcuts

Ctrl + a - pergi ke awal baris perintah

Ctrl + e - pergi ke akhir baris perintah

Ctrl + k - hapus dari kursor ke akhir baris perintah

Ctrl + u - hapus dari kursor ke awal baris perintah

Ctrl + w - delete from cursor to start of word (mis. Hapus mundur satu kata)

Ctrl + y - rekatkan kata atau teks yang dipotong menggunakan salah satu pintasan penghapusan (seperti yang di atas) setelah kursor

Ctrl + xx - bergerak antara mulai dari baris perintah dan posisi kursor saat ini (dan kembali lagi)

Alt + b - mundur satu kata (atau lanjutkan ke kata awal kursor aktif)

Alt + f - memajukan satu kata (atau pergi ke akhir kata saat kursor aktif)

Alt + d - hapus ke akhir kata mulai dari kursor (seluruh kata jika kursor berada di awal kata)

Alt + c - menggunakan huruf kapital hingga akhir kata mulai dari kursor (seluruh kata jika kursor berada di awal kata)

Alt + u - buat huruf besar dari kursor ke akhir kata

Alt + l - membuat huruf kecil dari kursor ke akhir kata

Alt + t - menukar kata saat ini dengan sebelumnya

Ctrl + f - bergerak maju satu karakter

Ctrl + b - mundur satu karakter

Ctrl + d - hapus karakter di bawah kursor

Ctrl + h - hapus karakter sebelum kursor

Ctrl + t - karakter swap di bawah kursor dengan yang sebelumnya

Command Recall Shortcuts

Ctrl + r - cari histori mundur

Ctrl + g - melarikan diri dari mode pencarian riwayat

Ctrl + p - perintah sebelumnya dalam sejarah (yaitu berjalan kembali melalui sejarah perintah)

Ctrl + n - perintah selanjutnya dalam sejarah (mis. Berjalan maju melalui sejarah perintah) Alt +. - gunakan kata terakhir dari perintah sebelumnya

Pintasan Kontrol Perintah

Ctrl + l - hapus layar

Ctrl + s - menghentikan output ke layar (untuk perintah verbose berjalan lama)

Ctrl + q - izinkan output ke layar (jika sebelumnya berhenti menggunakan perintah di atas)

Ctrl + c - mengakhiri perintah

Ctrl + z - menangguhkan / menghentikan perintah

Perintah Bash Bang (!) Bash juga memiliki beberapa fitur praktis yang menggunakan! (bang) untuk memungkinkan Anda melakukan beberapa hal funky dengan perintah bash.

!! - jalankan perintah terakhir! Bla - jalankan perintah terbaru yang dimulai dengan 'bla' (mis! Ls)

! blah: p - cetak perintah yang akan dijalankan! blah (juga tambahkan sebagai perintah terbaru dalam riwayat perintah)

! $ - kata terakhir dari perintah sebelumnya (sama dengan Alt +.)

! $: p - cetak kata yang akan diganti $!

! * - perintah sebelumnya kecuali kata terakhir (mis. Jika Anda mengetikkan '_find somefile.txt /', maka! * Akan memberi Anda '_find somefile.txt')

! : p - cetak apa! akan menggantikan

Curtis M
sumber
2

Dengan Natural Text Editingpreset diaktifkan di Profil -> Tombol. Anda cukup menghapus kata tersebut

  • Mundur dengan alt + delete
  • Teruskan dengan fn + alt + delete
Anthony Artemiev
sumber