web-dev-qa-db-ja.com

vi設定でbashの最後の引数を呼び出す方法

Bashでset -o vi設定を使用します。ここでのショートカットAlt+.(前のコマンドの最後の引数を思い出す)はemacsモードのように機能しないので、viと同等のものは何ですか?

7
Kossak

set -o viの後にこの行を追加します:

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

その後、あなたは使用することができます Alt+. emacsモードのように。

または、履歴拡張を使用して、両方で機能します。

!$:p
4
cuonglm

最後のコマンドの最後の引数を取得するには、さまざまな方法があります。

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

次のコードを~/.inputrcファイルにコピーします

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

my inputrc file を使用できます。そしてここに insert-last-argumentyank-last-arg のinputrcマニュアル

2.単語指定子:!!:$&!$

例えば:

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

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.

x-y

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

*

0番目を除くすべての単語。これは「1- $」の同義語です。イベントに単語が1つしかない場合は、「」を使用してもエラーにはなりません。その場合、空の文字列が返されます。 x

Abbreviates ‘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) ->
└─ #

シェル特殊パラメータ のマニュアル:

_

(アンダースコア。)シェルの起動時に、環境または引数リストで渡されたとおりに実行されているシェルまたはシェルスクリプトを呼び出すために使用される絶対パス名に設定します。続いて、展開後、前のコマンドの最後の引数に展開します。また、実行され、そのコマンドにエクスポートされた環境に配置された各コマンドを呼び出すために使用される絶対パス名に設定します。メールをチェックするとき、このパラメータはメールファイルの名前を保持します。

9
Marslo