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?


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."


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.


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.


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.


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.


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


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


2

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

  • Mundur dengan alt + delete
  • Teruskan dengan fn + alt + delete
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.