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?


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 .


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.


3
set -o vi

Kemudian Escdiikuti oleh

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


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

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


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 

0

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


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