Làm thế nào để điều hướng các lệnh dài nhanh hơn?


136

Có cách nào tăng tốc điều hướng Linux CLI khi tôi phải nhập các lệnh dài không? Tôi chỉ đơn giản là sử dụng các mũi tên ngay bây giờ, và - nếu tôi có một lệnh dài thì phải mất một thời gian để đi từ đầu lệnh đến giữa lệnh.

Có cách nào để ví dụ nhảy vào giữa lệnh mà không sử dụng mũi tên không?

Câu trả lời:


174

Một số ràng buộc khóa chỉnh sửa dòng hữu ích được cung cấp bởi thư viện Readline :

  • Ctrl-A: đi đến đầu dòng
  • Ctrl-E: đi đến cuối dòng
  • Alt-B: bỏ qua một từ lùi
  • Alt-F: bỏ qua một từ phía trước
  • Ctrl-U: xóa đến đầu dòng
  • Ctrl-K: xóa đến cuối dòng
  • Alt-D: xóa đến cuối từ

7
+1 vì điều này hoạt động ngay cả khi, vì một số lý do, mũi tên ctrl không hoạt động. Đáng lưu ý, đối với screenngười dùng, Ctrl-A trở thành Ctrl-A A.
enzotib

3
Để hoàn tác xóa (hoặc di chuyển văn bản bằng cách xóa nó), hãy sử dụng Ctrl + Y.
Lekensteyn

7
Ctrl + Mũi tên phải, Ctrl + Mũi tên trái đáng nói.
mac

3
Trên Ubuntu, sử dụng Gnome và GnomeTerminal Alt-Asẽ mở menu thay vì di chuyển con trỏ. Làm thế nào để bạn sử dụng Alt-Avới Gnome? Ý tôi là, Gnome là mặc định, vì vậy có khả năng bất cứ ai đọc cái này sẽ chạy một thiết bị đầu cuối trong Gnome.
Jason

1
Nếu bạn đang kết nối với Ubuntu từ OS X qua SSH, bạn có thể phải sử dụng "Esc" thay vì Ctrl, ví dụ: Esc-A, Esc-E, v.v. Điều này đúng với iTerm và Terminal.
Fred Clausen

77

Một số phím tắt khác từ đây

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

Cảm ơn bạn cho danh sách đơn giản, chit-chat-ít này.
neverMind9

14

Nếu bạn là người dùng vi [m] và bash, bạn có thể thấy hữu ích khi tạo đường dẫn (được sử dụng bởi bash) sử dụng chỉnh sửa kiểu vi bằng cách thêm set editing-mode vivào tệp ~/.inputrchoặc /etc/inputrctệp của bạn . Hoặc, bạn chỉ có thể làm cho bash sử dụng chỉnh sửa kiểu vi bằng cách chạy lệnh bash set -o vi. Thêm lệnh vào ~/.bashrctệp của bạn để làm cho hành vi liên tục.

Nếu bạn là người dùng zsh, hãy thêm bindkey -vvào .zshrctệp của bạn để chỉnh sửa kiểu vi.


8

Tôi không biết cách nào để nhảy vào giữa mà không sử dụng các phím con trỏ. Tuy nhiên, tôi có thể khuyên bạn nên sử dụng phím con trỏ CTRL + để chuyển từ trống sang trống (nghĩa là nhảy từ một từ này sang từ khác).


1

Nguồn đoạn mã dưới đây trong .bashrc của bạn. Ctrl-a nhảy đến điểm bắt đầu và nhấn Ctrl-a lại nhảy vào giữa.

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'

Hoặc nếu bạn muốn sử dụng Ctrl-Something để trực tiếp nhảy vào giữa, hãy thay đổi mã thành:

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

Và liên kết nó với một cái gì đó khác với Ctrl-a.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.