Apa jalan pintas untuk menghapus kata "maju" di terminal unix?

14

Saya lakukan Ctrl+Wdi terminal mac untuk menghapus kata (menghapus dari mana kursor berada di awal kata)

Bagaimana saya melakukan yang sebaliknya - menghapus dari tempat kursor ke akhir kata?

Meluncur
sumber

Jawaban:

14

Ini tergantung pada shell Anda dan mode pengeditan baris perintah yang aktif.

Untuk shell dengan mode pengeditan baris perintah Emacs ( set -o emacsdi beberapa shell), gunakan Alt+D(ini tidak berfungsi pada macOS untuk alasan apa pun, tetapi mencetak karakter , gunakan Escdsebagai gantinya).

Untuk shell dengan mode pengeditan baris perintah Vi ( set -o vidalam beberapa shell), gunakan Escdw(ini juga berfungsi pada macOS).

Kusalananda
sumber
Namun hanya dalam zsh, Meta-D menghapus jenis kata yang sama dengan yang dilakukan Ctrl-W (yang dibatasi kosong). Dalam bashdalam vimodus, Anda dapat menggunakan dWuntuk menghapus mereka
Stéphane Chazelas
1
@ StéphaneChazelas Ya, mereka (dua keycombos) memiliki pandangan berbeda tentang apa yang merupakan "kata".
Kusalananda
Anda dapat memeriksa "opsi penggunaan sebagai meta" di preferensi Keyboard terminal untuk membuatnya berfungsi.
Jozef Legény
Baik Esc + D dan Alt + D bekerja di terminal xfce4 0.6.3 .
neverMind9
1

Untuk disiplin garis tty, ^Whapus kata yang dibatasi spasi putih sebelumnya .

Dalam vieditor dalam mode sisipkan, ^Whapus mundur ke awal urutan pertama alnum atau non-alnum (aktif foo-+-bar.. baz, itu pertama menghapus baz, lalu .., lalu bar, lalu -+-, kemudian foo).

Di emacseditor, ^Whapus dari posisi kursor ke tanda (yang Anda set dengan Ctrl+Space).

Beberapa editor baris seperti readline(digunakan oleh bash, gdb...), zle(digunakan oleh zsh), pdkshketika dalam vimode, berperilaku seperti vidalam hal itu dan ketika dalam emacsmode berperilaku seperti disiplin garis tty (tidak emacs).

libedit(digunakan oleh kulit BSD atau (opsional) dash), tcshAT&T ksh, dalam emacsmode, berperilaku seperti di emacsmana tanda^W akan dihapus (awalnya pada awal buffer).

Untuk menghapus sebuah kata maju, di vieditor, Anda akan melakukannya dalam mode perintah ( normal ) dengan dwuntuk menghapus ke awal urutan berikutnya dari alnums atau non-alnums (atau akhir baris) dan dWuntuk menghapus ke urutan berikutnya dari kosong (liontin ^Wdisiplin garis tty).

Di emacseditor baris, Meta-Dakan menghapus hingga akhir urutan karakter alnum berikutnya. Operator kata gerak ( Meta-B, Meta-F) berperilaku serupa.

editor baris perintah, ketika dalam vimode, berperilaku seperti vi, tetapi dalam emacsmode, Anda memiliki dua sekolah utama: tcshsekolah dan kshsekolah.

The kshsekolah ( readline, ksh, yash) berperilaku sebagian besar seperti emacs( fish's perilaku sedikit berbeda dalam bagaimana memperlakukan non-alnum, karakter non-spasi di kedua emacsdan vimodus).

Di tcshsekolah ( tcsh, libedit, zsh), gerakan kata didasarkan pada kata-kata spasi-delimited sehingga konsisten dengan tty garis disiplin ^Wdalam hal itu.

Dalam zsh, perilaku dapat disesuaikan dengan gaya kata yang berbeda untuk semua widget gerak kata.

Sebab readline, Anda bisa mendapatkan tcshsekolah (dan Meta-Dmenghapus kata yang sama seperti Ctrl-Whalnya) dengan menambahkan ke ~/.inputrc:

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

Atau di sisi lain, sejajarkan ^Wdengan widget gerakan kata lainnya (berperilaku seperti Meta-Backscape) dengan:

set keymap emacs
"\C-W": backward-kill-word

Seperti apa Metakuncinya, lihat di sana .

Stéphane Chazelas
sumber
-1

Di Linux cobalah Ctrl+kuntuk menghapus dari mana kursor ke akhir kata.

Ada beberapa pintasan lain yang tercantum di bawah ini (berfungsi di Linux):

  1. Ctrl+e -> Mengambil kursor di akhir kata.
  2. Ctrl+t -> Antar-ubah posisi huruf.
  3. Ctrl+y -> menambahkan postfix "hh" ke kata saat ini.
  4. Ctrl+u -> Menghapus seluruh baris.
  5. Ctrl+o -> Bekerja sama dengan tombol Enter.
  6. Ctrl+p -> Bekerja sama seperti tombol panah ke atas.
  7. Ctrl+a -> Membawa kursor ke posisi awal perintah.
  8. Ctrl+d -> Menutup terminal.
  9. Ctrl+f -> Memindahkan kursor ke depan dengan satu Karakter.
  10. Ctrl+h -> Bekerja sama dengan tombol Backspace.
  11. Ctrl+j -> Bekerja sama dengan tombol Enter.
  12. Ctrl+m -> Bekerja sama dengan tombol Enter.
  13. Ctrl+b-> Bekerja sama dengan tombol panah kanan. 14 Ctrl+4 -> Menghapus kata
SMshrimant
sumber
3
Ctrl+kdihapus sampai akhir baris . Ctrl+umenghapus seluruh baris (jika kursor ada di akhir). Ctrl+dmengirim EOF. Ctrl+epergi ke akhir baris , dll.
Kusalananda
Ctrl + y digunakan untuk menempel, atau menarik, hal terakhir yang Anda simpan di clipboard, dalam kasus Anda itu mungkin "hh." Mengapa menurut Anda akan ada cara pintas keyboard untuk post-fix kata yang diberikan dengan huruf "hh"? Bagaimana itu berguna?
bmcentee148