Bagaimana cara menavigasi perintah panjang lebih cepat?


136

Apakah ada cara mempercepat navigasi Linux CLI ketika saya harus memasukkan perintah panjang? Saya cukup menggunakan panah saat ini, dan - jika saya memiliki perintah yang panjang, dibutuhkan beberapa waktu untuk mulai dari awal perintah hingga ke tengahnya.

Apakah ada cara misalnya melompat ke tengah perintah tanpa menggunakan panah?

Jawaban:


174

Beberapa ikatan kunci pengeditan baris bermanfaat yang disediakan oleh pustaka Readline :

  • Ctrl-A: pergi ke awal baris
  • Ctrl-E: pergi ke akhir baris
  • Alt-B: lewati satu kata ke belakang
  • Alt-F: lewati satu kata ke depan
  • Ctrl-U: hapus ke awal baris
  • Ctrl-K: hapus ke akhir baris
  • Alt-D: hapus sampai akhir kata

7
Memberi +1 karena ini berfungsi meskipun, untuk beberapa alasan, panah ctrl tidak berfungsi. Layak untuk dicatat, bagi screenpengguna, Ctrl-A menjadi Ctrl-A A.
enzotib

3
Untuk membatalkan penghapusan (atau memindahkan teks dengan menghapusnya), gunakan Ctrl + Y.
Lekensteyn

7
Ctrl + panah kanan, Ctrl + panah kiri layak disebutkan.
mac

3
Di Ubuntu menggunakan Gnome dan GnomeTerminal Alt-Amembuka menu alih-alih memindahkan kursor. Bagaimana cara Anda menggunakan Alt-AGnome? Maksud saya, Gnome adalah default, jadi kemungkinan siapa pun yang membaca ini akan menjalankan terminal di Gnome.
Jason

1
Jika Anda terhubung ke Ubuntu dari OS X melalui SSH Anda mungkin harus menggunakan "Esc" bukan Ctrl misalnya, Esc-A, Esc-E dan sebagainya. Ini berlaku untuk iTerm dan Terminal.
Fred Clausen

77

Beberapa jalan pintas lagi dari sini

Ctrl + a  go to the start of the command line
Ctrl + e  go to the end of the command line
Ctrl + k  delete from cursor to the end of the command line
Ctrl + u  delete from cursor to the start of the command line
Ctrl + w  delete from cursor to start of word (i.e. delete backwards one word)
Ctrl + y  paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor
Ctrl + xx  move between start of command line and current cursor position (and back again)
Alt + b  move backward one word (or go to start of word the cursor is currently on)
Alt + f  move forward one word (or go to end of word the cursor is currently on)
Alt + d  delete to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + c  capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word)
Alt + u  make uppercase from cursor to end of word
Alt + l  make lowercase from cursor to end of word
Alt + t  swap current word with previous
Ctrl + f  move forward one character
Ctrl + b  move backward one character
Ctrl + d  delete character under the cursor
Ctrl + h  delete character before the cursor
Ctrl + t  swap character under cursor with the previous one

Terima kasih atas daftar langsung dan obrolan ringan ini.
neverMind9

14

Jika Anda seorang vi [m] dan bash pengguna, Anda mungkin menemukan itu berguna untuk membuat readline (digunakan oleh bash) menggunakan editing vi-gaya dengan menambahkan set editing-mode vike Anda ~/.inputrcatau /etc/inputrcfile. Atau, Anda bisa membuat bash menggunakan pengeditan vi-style dengan menjalankan perintah bash set -o vi. Tambahkan perintah ke ~/.bashrcfile Anda untuk membuat perilaku tetap ada.

Jika Anda pengguna zsh, tambahkan bindkey -vke .zshrcfile Anda untuk mengedit gaya-vi.


8

Saya tidak tahu cara untuk secara khusus melompat ke tengah tanpa menggunakan tombol kursor. Namun, saya dapat merekomendasikan menggunakan tombol kursor CTRL + untuk berpindah dari kosong ke kosong (yaitu, beralih dari satu kata ke kata lain).


1

Sumber cuplikan-kode di bawah ini di .bashrc Anda. Ctrl-a melompat ke awal dan menekan Ctrl-a lagi melompat ke tengah.

jump_mid() {
    if [ "$READLINE_POINT" -eq "0" ]; then
        LEN=${#READLINE_LINE}
        POS=$(($LEN / 2))
        READLINE_POINT=$POS
    else
        READLINE_POINT=0
    fi
}
bind -x '"\C-a" : jump_mid'

Atau jika Anda ingin menggunakan Ctrl-Something untuk langsung melompat ke tengah, ubah kode menjadi:

jump_mid() {
    LEN=${#READLINE_LINE}
    POS=$(($LEN / 2))
    READLINE_POINT=$POS
}

Dan ikat ke sesuatu yang berbeda dari Ctrl-a.

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.