Peningkatan fungsionalitas terminal autocomplete (mirip dengan Matlab)

18

Jika ada di antara Anda yang pernah menggunakan Matlab, Anda mungkin telah memperhatikan fungsionalitas jendela perintah dalam program itu. Saya bertanya-tanya apakah mungkin untuk mengaktifkan fungsi yang sama di Terminal Mac.

Ini berfungsi seperti ini: misalkan Anda telah menggunakan dua perintah sebelumnya di sesi Terminal ini. Pertama Anda menggunakan cd ~dan kemudian a ls -la.

Di setiap terminal * nix, termasuk Mac, jika Anda menekan Up Arrow, itu pertama akan menunjukkan ls -laperintah dan, jika Anda menekannya dua kali, cd ~perintah. Ini bagus. Tapi, di Matlab, jika Anda pertama kali mengetik surat itu cdan kemudian tekan Up Arrow, itu tidak akan menampilkan Anda ls, tetapi langsung pergi ke cd ~. Ini menghemat banyak waktu ketika Anda memiliki perintah besar dan daftar panjang perintah yang digunakan sebelumnya.

Apa itu mungkin?

perr0
sumber

Jawaban:

27

Di shell Bash, Anda bisa menekan Control+ Runtuk melakukan pencarian cerdas terbalik dalam sejarah. Mulai ketikkan perintah dan shell akan melengkapi otomatis dengan perintah yang dimasukkan sebelumnya.

Kemudian Anda dapat menekan Enteruntuk menjalankan perintah lagi, gunakan tombol panah kiri atau kanan untuk mengedit perintah, atau terus menekan Control+ Runtuk menggilir penyelesaian yang mungkin lainnya.

Membalikkan pencarian cerdas

Gerry
sumber
9

Simpan ini sebagai ~ / .inputrc:

# make the up and down arrows cycle through commands that match the start of a line
"\e[A": history-search-backward
"\e[B": history-search-forward

Option-up akan menjadi \e\e[Adan control-p \C-p. Anda dapat melihat urutan keluar dari kombinasi tombol lain dengan menekan control-v.

Lri
sumber
1
Untuk pengguna yang belum memilikinya ~/.inputrc, buat saja.
Sibbs Gambling
Seharusnya jawaban yang diterima
ripper234
1
"\ e [A": perintah tidak ditemukan
Louis
2

Hal lain yang dapat Anda lakukan adalah mengetik !dan kemudian huruf pertama, dan itu akan menemukan yang terbaru. IE: cd ~dapat diakses dengan!c

Mark Robinson
sumber
1

Ini adalah fitur dari shell. Control-R akan melakukan apa yang Anda gambarkan, tetapi mengubah ke shell yang lebih modern akan membuat Anda jauh lebih banyak. Lihatlah Z-shell (zsh), ada sedikit kurva belajar, tetapi sangat kuat.

Bahtera Ƭ
sumber
Saya pikir maksud Anda Control-R.
jmk
1

zsh akan menyelesaikan perintah persis seperti pada contoh Anda. Anda bahkan tidak perlu melakukan apa pun selain menggunakannya untuk shell Anda.

Chris
sumber
0

Tambahkan ini ke .cshrc Anda (jika Anda menggunakan tcsh) -

  bindkey -k up history-search-backward
  bindkey -k down history-search-forward

Kemudian lakukan source ~ / .cshrc untuk mendapatkan fungsionalitas yang Anda gambarkan dengan tepat.

Saya tidak tahu apakah ada yang setara. Profil.

bisa jadi
sumber