!:0
harus melakukan trik. Dari dokumentasi zsh:
Word Designators A word designator indicates which word or words of a given command line are to be included in a history reference. A `:' usually separates the event specification from the word designator. It may be omitted only if the word designator begins with a `^', `$', `*', `-' or `%'. Word designators include: 0 The first input word (command). n The nth argument. ^ The first argument. That is, 1. $ The last argument. % The word matched by (the most recent) ?str search. x-y A range of words; x defaults to 0. * All the arguments, or a null value if there are none. x* Abbreviates `x-$'. x- Like `x*' but omitting word $.
(Ini juga berfungsi dengan bash.) Ada juga !-1
jika Anda merasa lebih nyaman untuk mengetik.
#TL;DRAlt +0 +. :menyisipkan perintah terakhir tanpa argumen
Diuji pada Ubuntu 18.04 dengan pengaturan keybinding default (yaitu keybindings Emacs)
Anda dapat menggabungkan pintasan keyboard
Mari anggap perintah terakhir adalah:
mv foo bar
naik , Ctrl +w :perintah terakhir tanpa kata terakhir =mv foo
Alt +0 +. :argumen pertama dari perintah terakhir =mv
Beberapa pintasan berguna:
-
Alt +. :masukkan argumen terakhir dari perintah terakhir (ulangi untuk kembali ke riwayat)
-
Alt +angka +. :masukkan #n argumen terakhir dari perintah terakhir (ulangi untuk kembali ke riwayat)
-
Alt +- , angka , Alt +. , zsh: Alt +- +# +. :masukkan #n argumen pertama dari perintah terakhir (ulangi untuk kembali ke riwayat)
-
Potong perintah (relatif terhadap posisi kursor)
-
Ctrl +w :memotong kata terakhir
-
Alt +d :memotong kata berikutnya
-
Ctrl +k :memotong semuanya setelah
-
Ctrl +u , zsh: Alt +w :memotong semuanya sebelumnya
-
zsh: Ctrl +u :memotong seluruh perintah (Dalam bash Anda dapat menggabungkan Ctrl +u , Ctrl +k )
-
Ctrl +y :menempelkan karakter yang sebelumnya dipotong dengan perintah Potong apa saja . Dalam bash Anda dapat merangkai perintah potong , dan Ctrl +y akan menempelkan semuanya.
-
Ctrl +_ :undo last edit (sangat berguna ketika melebihi Ctrl +w )
-
Ctrl +kiri :pindah ke kata terakhir
-
Ctrl +benar :pindah ke kata berikutnya
-
rumah atau Ctrl +a :pindah ke awal perintah
-
selesai atau Ctrl +e :pindah ke akhir perintah
Untuk melihat semua pintasan yang tersedia
- bash:
bind -lp
- zsh:
bindkey -L
Sayangnya ada beberapa keterbatasan
"words" hanya mencakup a-zA-Z
karakter, jadi karakter simbol apa pun akan menghentikan pintasan kata.
Jadi jika argumen terakhir adalah url dan Anda ingin menghapusnya dengan Ctrl +w itu akan menyakitkan.
Misalnya:curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments
Untuk menghapus url itu menggunakan Ctrl +w , Anda harus mengulanginya 12 kali.
Alangkah baiknya memiliki pintasan serupa yang hanya berhenti di karakter spasi
Saya terus memperbaruinya di sini:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md