Cái này là gì (arg: 1) xuất hiện trong terminal / tty sau khi tôi nhấn tổ hợp phím?


21

Trong một thiết bị đầu cuối ảo tôi (vô tình) nhấn Win+ 1và có một dòng mới bao gồm

(arg: 1)

Miễn là tôi tiếp tục Winnhấn, tất cả các số tôi nhấn sẽ được thêm vào số trong ngoặc đơn, ví dụ Win1+ 4sản lượng (arg:14).

Khi tôi (sau khi phát hành Win) nhấn bất kỳ phím nào, ký tự đó được in nhiều lần khi số đọc và (arg: ...)biểu thức được thay thế bằng dấu nhắc tiêu chuẩn.

Có ai biết những gì xảy ra ở đây?

Câu trả lời:


24

Đó là một đối số chữ số , một tính năng của thư viện readline được tích hợp vào bash:

digit-argument (M-0, M-1, ..., M--)
    Add  this digit to the argument already accumulating, or start a
    new argument. M-- starts a negative argument.

Tính năng này giúp đơn giản hơn để thêm hoặc xóa văn bản trong dòng lệnh hiện đang được chỉnh sửa. Giả sử bạn muốn viết echo gggg:

  1. Nhập echotheo sau là khoảng trắng
  2. Bấm phím Meta (có thể là Win, Altvà / hoặc Esccho bạn) và gõ4g

Nhưng bạn có thường xuyên phải gõ một chữ cái nhiều lần đến mức điều này sẽ giúp bạn tiết kiệm được gì không? Tính năng này được thiết kế chủ yếu cho các lệnh đọc , xem các chương 8.2.1 .88.2.3 của Tài liệu tham khảo (ý nghĩa của C C Ctrl, ý nghĩa của Miên nghĩa là Meta).

Bạn có thể di chuyển trở lại một từ với Meta và B, nhưng nếu bạn muốn chuyển lại nhiều từ cùng một lúc thì sao? Bạn có thể giữ Altvà nhấn Bnhiều lần hoặc sử dụng đối số chữ số:

  1. Có một lỗi đánh máy trên dòng lệnh của bạn năm từ trở lại:

    $ echo one two tree four five six seven
  2. Nhấn phím Meta, nhập 5và nhấn Meta và B. Et vià:

    $ echo one two ree four five six seven
  3. Sửa lỗi chính tả và nhấn Enterđể bắn hoặc Endhoặc Ctrl+ Eđể di chuyển đến cuối dòng một lần nữa.

Bạn có thể xóa một từ bằng cách nhấn Meta và Backspace, nhưng nếu bạn muốn xóa nhiều từ cùng một lúc thì sao?

  1. Bạn đã quên một từ trên dòng lệnh của bạn:

    $ echo one two four five six seven
  2. Nhấn phím Meta, nhập 4và nhấn Meta và Backspace.

    $ echo one two 
  3. Nhập từ còn thiếu theo sau là dấu cách và nhấn Ctrl+ Yđể dán nội dung vừa xóa. Et vià:

    $ echo one two three four five six seven

Bạn nói đúng, bạn cũng có thể chuyển đến đó như vừa giải thích mà không xóa bất cứ điều gì. Chúng tôi đang ở trên Linux, luôn có một số cách để làm điều tương tự.

Và những gì một cuộc tranh luận tiêu cực của người Viking là gì? Nó cũng làm như vậy, nhưng theo hướng ngược lại, vì vậy Meta -2Meta Backspacexóa hai từ tiếp theo của dòng lệnh. Nhưng người ta có thể sử dụng Meta 1Meta Dđể làm điều tương tự! Hãy vui mừng vì bạn đã nhận được điều đó, chào mừng bạn đến với dòng lệnh của bạn.

Đọc thêm:


Phiên bản bash nào đã xuất hiện trong? Trông thật hữu ích. + 1ed.
Sergiy Kolodyazhnyy

trên WSL nóEsc
αғsнιη

1
Ồ Tôi rất vui vì đã cho bạn cảm ứng cho một câu trả lời tuyệt vời như vậy !!
guntbert

Không có gì để "thừa nhận", thường khi chúng ta đang nói về những điều chúng ta đã biết, chúng ta ('tôi') có xu hướng không thực hiện nghiên cứu một lần nữa. Nghiên cứu của bạn làm cho câu trả lời này rất toàn diện - bao gồm cả các nguồn.
guntbert

1
Điều thú vị là các đối số kỹ thuật số hoạt động, với những sửa đổi thích hợp , trong chế độ chỉnh sửa giống như vi ( set -o vi), quá.
Lão máu
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.