Bash

如何使用 vi 設置呼叫 bash 中的最後一個參數

  • May 25, 2018

set -o vi在 bash 中使用設置。這裡的快捷Alt+.方式(呼叫上一個命令的最後一個參數)在 emacs 模式下不起作用,那麼 vi 的等價物是什麼?

在後面添加這一行set -o vi

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

然後你可以在 emacs-mode中使用Alt+ like。.

或者使用歷史擴展,同時工作:

!$:p

有多種方法可以獲取最後一個命令的最後一個參數:

  1. inputrc:插入最後一個參數 & yank-last-arg

將以下程式碼複製到您的~/.inputrc文件中

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

你可以使用我的 inputrc 文件。這裡的 inputrc 手冊insert-last-argumentyank-last-arg

  1. 詞指示符:!!: $ & ! $

例如:

┌─ (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

Shell Word Designator的手冊顯示:

!!:$

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

0(零)

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’.

所有單詞,除了第 0 個。這是“1-$”的同義詞。如果事件中只有一個單詞,則使用’‘不是錯誤;在這種情況下返回空字元串。X

Abbreviates ‘x-$’

X-

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

3、外殼特殊參數:$_

例如:

┌─ (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) ->
└─ #

殼牌特殊參數手冊中:

_

(下劃線。)在 shell 啟動時,設置為用於呼叫在環境或參數列表中傳遞的 shell 或正在執行的 shell 腳本的絕對路徑名。隨後,在展開後展開到前一個命令的最後一個參數。還設置為用於呼叫每個執行的命令並放置在導出到該命令的環境中的完整路徑名。檢查郵件時,此參數保存郵件文件的名稱。

引用自:https://unix.stackexchange.com/questions/155702