Làm thế nào để nhớ lại đối số cuối cùng trong bash với cài đặt vi


7

Tôi sử dụng set -o vicài đặt trong bash. Shorcut Alt+.(nhớ lại đối số cuối cùng của lệnh trước) ở đây không hoạt động như trong chế độ emacs, vậy tương đương với vi là gì?

Câu trả lời:


4

Thêm dòng này sau set -o vi:

bind -m vi-command ".":yank-last-argument # or insert-last-argument

Sau đó, bạn có thể sử dụng Alt+ .like trong chế độ emacs.

Hoặc sử dụng mở rộng lịch sử, làm việc trong cả hai:

!$:p

2
Nó không xuất ra tham số lệnh cuối cùng nhưng không quay vòng qua tất cả các tham số lệnh được sử dụng cuối cùng, giống như chế độ emacs. Trong chế độ vi, bạn sẽ luôn nhận được thông số cuối cùng lặp đi lặp lại. Nó không giúp được gì nhiều.
MaikoID

1
Theo các tài liệu , lệnh chính xác là yank-last-arg.
jasonwryan

@jasonwryan: Chúng là từ đồng nghĩa. Xem: gnu.org/software/bash/manual/html_node/ .
cuonglm

9

Có nhiều phương pháp khác nhau để lấy đối số cuối cùng của lệnh cuối cùng:

1. inputrc: insert-last-argument & yank-last-arg

Sao chép mã sau vào ~/.inputrctập tin của bạn

set editing-mode vi
# Insert Mode
set keymap vi-insert
"\e.":yank-last-arg
"\e_": yank-last-arg

Bạn có thể sử dụng tập tin inputrc của tôi . Và đây là hướng dẫn inputrc cho insert-last-argumentyank-last-arg

2. Trình thiết kế từ: !!: $ &! $

Ví dụ:

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !$
echo arg5
arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !!:$
echo arg5
arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !!:^
echo arg1
arg1

┌─ (marslo@MarsloJiao ~) ->
└─ # echo arg1 arg2 arg3 arg4 arg5
arg1 arg2 arg3 arg4 arg5

┌─ (marslo@MarsloJiao ~) ->
└─ # echo !!:2-4
echo arg2 arg3 arg4
arg2 arg3 arg4

Hướng dẫn của Shell Word Designator hiển thị:

!!: $

designates the last argument of the preceding command. This may be shortened to !$.

0 (không)

The 0th word. For many applications, this is the command word.

n

The nth word.

^

The first argument; that is, word 1.

$

The last argument.

%

The word matched by the most recent ‘?string?’ search.

xy

A range of words; ‘-y abbreviates 0-y’.

*

Tất cả các từ, ngoại trừ số 0. Đây là từ đồng nghĩa với '1- $'. Không phải là lỗi khi sử dụng ' ' nếu chỉ có một từ trong sự kiện; chuỗi rỗng được trả về trong trường hợp đó. x

Abbreviates x-$

x-

Abbreviates x-$ like x*’, but omits the last word.

3. Thông số đặc biệt của Shell: $ _

Ví dụ:

┌─ (marslo@MarsloJiao ~) ->
└─ # echo very-very-very-very-very-long-argument
very-very-very-very-very-long-argument

┌─ (marslo@MarsloJiao ~) ->
└─ # echo $_
very-very-very-very-very-long-argument

┌─ (marslo@MarsloJiao ~) ->
└─ # ls /usr/local/etc/

┌─ (marslo@MarsloJiao ~) ->
└─ # cd $_

┌─ (marslo@MarsloJiao /usr/local/etc) ->
└─ #

Trong hướng dẫn sử dụng thông số đặc biệt của Shell :

_

(Một dấu gạch dưới.) Khi khởi động shell, được đặt thành tên đường dẫn tuyệt đối được sử dụng để gọi tập lệnh shell hoặc shell đang được thực thi như được truyền trong môi trường hoặc danh sách đối số. Sau đó, mở rộng đến đối số cuối cùng cho lệnh trước đó, sau khi mở rộng. Cũng được đặt thành tên đường dẫn đầy đủ được sử dụng để gọi từng lệnh được thực thi và được đặt trong môi trường được xuất sang lệnh đó. Khi kiểm tra thư, tham số này giữ tên của tệp thư.

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.