Apa cara terbaik untuk bergerak di jalur perintah yang sangat panjang di terminal?
Katakanlah saya menggunakan tombol panah atau Ctrl- Runtuk mendapatkan baris perintah panjang ini:
./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 --option43 --option44 --option45 --option46 --option47 --option48 --option49 --option50
Sekarang saya perlu memindahkan (mulai dari awal atau akhir baris) kursor --option25
untuk memodifikasi sesuatu di sana.
Apa cara tercepat untuk sampai ke sana? Apa yang biasanya saya lakukan adalah Ctrl- Auntuk memulai dan kemudian berulang kali Alt- Funtuk bergerak maju, kata demi kata (atau Ctrl- Euntuk mencapai akhir dan Alt- Buntuk kemudian mundur). Tetapi pada garis panjang itu membutuhkan waktu terlalu banyak. Pasti ada cara untuk mencari dan melompat langsung ke bagian yang perlu saya modifikasi, misalnya option25
?
Tahan tombol Option dan klik di mana Anda ingin kursor bergerak, dan Terminal mempercepat kursor ke tempat yang tepat.
sumber
Saya cenderung memilih mode edit vi (karena penekanan tombol itu tertanam ke sumsum tulang belakang saya sekarang (otak tidak digunakan sama sekali), bersama dengan CTRL-K, CTRL-X dari WordStar 3.3 :-). Anda dapat menggunakan baris perintah
set -o vi
untuk mengaktifkannya (danset -o emacs
mengembalikan).Di Vi, itu akan menjadi (ESC-K untuk mendapatkan antrian pertama tentu saja) "
f5;;B
" (tanpa tanda kutip ganda).Tentu saja, Anda harus memahami apa yang ada di jalur untuk lolos dengan ini. Pada dasarnya, ini
Mari kita lihat apakah para penggemar emacs dapat memberikan solusi yang lebih baik, kurang dari 5 penekanan tombol (walaupun saya tidak ingin memulai perang agama).
Pernahkah Anda memikirkan apakah Anda mungkin ingin memasukkan perintah yang sangat panjang ini ke dalam naskah? :-)
Sebenarnya, saya bisa melakukan yang lebih baik dari itu: "
3f5B
" untuk menemukan kemunculan ketiga "5" kemudian kembali ke awal kata.sumber
Gunakan Meta-b / Meta-f untuk bergerak mundur / maju dengan kata masing-masing.
Di OSX, Meta diterjemahkan sebagai ESC, yang menyebalkan.
Tetapi sebagai alternatif, Anda dapat membuka preferensi terminal -> pengaturan -> profil -> keyboard dan centang "gunakan opsi sebagai kunci meta"
sumber
Setelah menjalankan perintah sekali, jalankan
fc
Itu akan diluncurkan
$EDITOR
dengan perintah sebelumnya, maka Anda dapat menggunakan editor reguler Anda untuk memodifikasi perintah. Ketika Anda menyimpan dan keluar, file tersebut akan dieksekusi...tapi, seperti yang dikatakan Pax - baris perintah tidak terlalu baik untuk mengedit garis panjang yang tidak masuk akal - mengapa tidak membuat perintah menjadi skrip?
sumber
Jika Anda ingin memajukan sejumlah kata tertentu, tekan
M-<n>
(M-
untuk Meta dan biasanya tombol pelarian) lalu tekan angka. Ini mengirimkan argumen berulang ke readline, sehingga Anda dapat mengulangi perintah apa pun yang Anda inginkan - jika Anda ingin maju kemudian tekanM-<n> M-f
dan kursor akan bergerak maju<n>
sejumlah kata.Misalnya
Jadi untuk contoh Anda dari kursor di awal baris Anda akan menekan,
M-26 M-f
dan kursor Anda akan di--option25|
-atau- dari akhir barisM-26 M-b
akan meletakkan kursor Anda di--|option25
sumber
Pencarian riwayat tambahan
di terminal masukkan:
lalu salin tempel dan simpan
yang perlu Anda lakukan untuk menemukan perintah sebelumnya adalah memasukkan katakanlah 2 atau 3 huruf pertama dan panah ke atas akan membawa Anda ke sana dengan cepat mengatakan saya ingin:
yang perlu saya lakukan hanyalah memasukkan
dan tekan perintah panah ke atas akan segera muncul
sumber
Salah satu pilihan adalah untuk digunakan
M-x shell
diemacs
. Itu menyediakan semua fasilitas pengeditan dan penekanan tombol yangemacs
dimiliki, jadiC-s
dapat digunakan untuk mencari teksoption25
, misalnya.(Tapi saya masih lebih suka berada di shell terminal nyata jika seseorang dapat mengarahkan saya ke fasilitas pencarian dan edit yang baik.)
sumber
Gunakan mouse
Terkadang, cara termudah untuk mengedit baris perintah adalah menggunakan mouse. Beberapa jawaban sebelumnya memberikan perintah untuk membuka baris Anda saat ini di $ EDITOR Anda. Bagi saya (zhs dengan konfigurasi grml) kombinasi itu
Alt+e
. Jika Anda mengaktifkan mouse di editor Anda, Anda dapat menggunakannya.Untuk mengaktifkan mouse di Vim, tambahkan ini ke ~ / .vimrc Anda
Jika Anda kemudian ingin melakukan pemilihan teks di terminal (alih-alih meneruskan mouseclick ke vim), tahan Shift ketika Anda mengklik; ini spesifik terminal, tentu saja.
Sysadmin seharusnya tidak takut dengan mouse.
sumber
Di Cygwin, Anda dapat mengaktifkan fitur tersebut dengan mengklik kanan jendela. Di jendela sembul, pilih Opsi ... -> Mouse -> aktifkan kursor baris perintah Clicks place -> Apply.
Mulai sekarang, cukup mengklik tombol kiri mouse di beberapa posisi dalam baris perintah akan menempatkan kursor di sana.
sumber
pertama: ekspor EDITOR = 'nano -m'
lalu: CTRL + X CTRL + E secara berurutan.
Baris Anda saat ini akan terbuka di editor nano dengan mouse diaktifkan. Anda dapat mengklik bagian teks mana saja dan mengedit
kemudian CTRL + X untuk keluar dan y untuk mengkonfirmasi penyimpanan.
sumber
Saya membuat skrip untuk membuat kursor baris perintah bergerak saat klik mouse :
Itu dapat ditemukan di github
Info lebih lanjut tentang pos lain
Akan berfungsi jika
echo -e "\e[?1000;1006;1015h" # Enable tracking
mencetak urutan pelepasan pada terminal saat mengklik dengan mousesumber
Mungkin bukan yang tercepat, tetapi ini perlu di sini, beberapa membaca tentang gerakan kursor ANSI
Sequence escape ANSI memungkinkan Anda untuk memindahkan kursor di layar sesuka hati. Ini lebih berguna untuk antarmuka pengguna layar penuh yang dihasilkan oleh skrip shell, tetapi juga dapat digunakan pada prompt . Urutan escape move adalah sebagai berikut:
(...)
Coba masukkan baris kode berikut pada prompt (sedikit lebih jelas apa fungsinya jika prompt ada beberapa baris di terminal ketika Anda memasukkan ini):
echo -en "\033[7A\033[1;35m BASH \033[7B\033[6D"
Ini harus memindahkan kursor tujuh baris ke atas layar, cetak kata "BASH ", dan kemudian kembali ke tempat mulai menghasilkan prompt normal.Contoh :
Pindahkan kursor ke belakang 7 baris:
Pindahkan kursor ke baris 10, kolom 5:
Kode warna gema dengan cepat , untuk mewarnai program:
sumber