Apakah ada cara untuk melompat ke bagian sebelumnya dari perintah baris perintah di Terminal Mac?

9

Saya sering menemukan diri saya menulis perintah panjang di bash shell - hal-hal dengan banyak argumen, alamat web, rute, dll. Seringkali saya menyadari bahwa saya lupa, katakan, letakkan "bundle exec" di awal perintah, atau salah eja sesuatu, atau lupa tanda kutip. Atau sesuatu hanya dengan meletakkan "cd", bukan "vim".

Maka mulailah proses yang membosankan memegang tombol panah kiri sampai saya kembali ke awal perintah.

Apakah ada cara untuk melompat ke awal garis lagi?

GlyphGryph
sumber
2
Anda mungkin ingin menyingkirkan aplikasi terminal default, dan unduh iTerm
Clement Herreman
Mengapa? Saya baru saja memeriksa, dan tampaknya berperilaku hampir sama. (Kunci rumah berfungsi, sekarang, tetapi karena saya memiliki kunci lain yang tidak terlalu penting). Apa yang ditawarkannya yang membuatnya layak untuk mengulang semua pengaturan dan konfigurasi serta tugas saya dan yang lainnya?
GlyphGryph
Ini sepertinya sesuatu yang bisa Anda siapkan dengan .inputrc
Rob
Juga, untuk melompat satu kata pada satu waktu, gunakan ⌥B dan ⌥F untuk melompat bolak-balik.
fideli
@fideli, tetapi hanya jika Anda telah mengaktifkan "Gunakan Opsi sebagai kunci meta". Perhatikan bahwa pada Mac OS X Lion 10.7, pengaturan keyboard standar Terminal memetakan Opsi-Panah Kiri / Panah Kanan ke Esc-b / f sehingga tidak diperlukan konfigurasi.
Chris Page

Jawaban:

12

Selain ^ A dan ^ E, Anda dapat melakukannya

  • Esc- buntuk melompat mundur satu kata
  • Esc- funtuk melompat ke depan satu kata
  • Ctrl- buntuk mundur satu karakter
  • Ctrl- funtuk bergerak maju satu karakter

Lihat manual bash untuk perintah bergerak .

glenn jackman
sumber
Suatu hal yang perlu diperhatikan - ini dari Emacs, dan dengan menambahkan emacsopsi ke shellopts Anda, Anda bisa mendapatkan lebih banyak lagi.
TC1
6

Anda dapat menggunakan perintah Emacs, misalnya:

  • ctrl-A untuk pergi ke awal baris perintah
  • ctrl-E untuk pergi ke akhir baris perintah

Ini bash, tidak khusus untuk Mac.

mouviciel
sumber
3
set -o vi

Kemudian Escdiikuti oleh

^mulai dari baris $akhir baris bsatu kata backword wsatu kata ke depan

kizzx2
sumber
Saya penggemar berat Vim, jadi prinsip jawaban Anda sangat bagus bagi saya, tetapi pengeditan baris perintah modal mungkin agak membingungkan bagi OP, terutama tanpa menyebutkan bagaimana kembali untuk bisa mengetik! Kembali ke mode memasukkan menggunakan i(masukkan) untuk mengetik sebelum kursor atau a(tambahkan) untuk mengetik setelah kursor.
Cascabel
Saya telah menggunakan vi sebagai editor teks utama saya selama beberapa dekade, tetapi saya masih lebih suka binding kunci emacs untuk shell saya.
Keith Thompson
Sebenarnya, OP menggunakan vim untuk semua pengeditan teks, jadi mengetahui Anda dapat menetapkan standar vi sangat berguna. Terimakasih banyak!
GlyphGryph
@ Kim Thompson: Dulu saya berpikiran sama. Saya hanya berpikir shell tidak bercampur dengan baik dengan mode pemindahan mode ini (seperti vkunci menjengkelkan dalam mode vi). Tapi setelah beberapa saat saya baru saja terinfeksi vim, jadi saya sarankan Anda mencobanya: P
kizzx2
1

Ini tidak menjawab pertanyaan Anda tetapi dalam beberapa kasus dapat memecahkan masalah Anda.

Dalam bashsatu !!token diganti dengan perintah sebelumnya. Jadi, jika Anda lupa menambahkan sesuatu ke awal perintah (seperti sudo), Anda dapat melakukan sesuatu seperti ini

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED
Sam
sumber
0

Anda dapat mengkonfigurasi Ctrl/Opt+Left/Rightpintasan reguler untuk digunakan di Terminal. Dengan begitu, Anda tidak perlu mempelajari kembali semuanya saat Anda menggunakan Terminal.

Buka Terminal »Preferensi ...» Pengaturan »(pilih profil)» Keyboard .

Di sana, tetapkan pintasan berikut:

  • Control + Cursor Left: Kirim string \033[1~ke shell
  • Control + Cursor Right: Kirim string \033[4~ke shell
  • Option + Cursor Left: Kirim string \033[5Dke shell
  • Option + Cursor Right: Kirim string \033[5Cke shell

Saya juga suka yang berikut ( Fn + Left/Right):

  • Home: Kirim string \033[1~ke shell
  • End: Kirim string \033[4~ke shell

masukkan deskripsi gambar di sini

Daniel Beck
sumber
Pada Singa ⌥ ← dan ⌥ → terikat ke M-bdan M-fsecara default. Dan ⌃ ← dan ⌃ → adalah pintasan default untuk mengubah spasi.
Lri
0

Saya membutuhkan ini di Cygwin, bukan Mac, tetapi menambahkan yang berikut ini ~/.inputrcdapat membantu juga:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 
Tom
sumber
0

Saya bukan pengguna Mac tetapi bagaimana dengan Homekuncinya? Itu bekerja dengan baik pada terminal Linux.

m0skit0
sumber
1
Tidak, itu menggulir ke bagian atas jendela terminal.
GlyphGryph
Secara default, Home dan End gulir tampilan, yang merupakan perilaku standar Mac. Secara default, Shift-Home dan Shift-End mengirim masing-masing "ESC [H" dan "ESC [F"). Semua ini dapat disesuaikan di Terminal> Preferensi> Pengaturan> [profil]> Keyboard .
Chris Page
0

Cara terbaik untuk bergerak di sekitar baris perintah di Mac Os X adalah dengan menggunakan profil saya: https://github.com/lingtalfi/mac-terminal-shortcuts

Ini memberikan pintasan (intuitif) berikut:

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
ling
sumber