Recupera o último argumento do último comando no modo bash 'vi

6

Ao usar o modo vi do bash (set -o vi), é possível recuperar o último argumento do último comando executado? Isso é feito no modo emacs com ESC + . , e eu gostaria de fazê-lo no modo vi também.

Eu sei que o bash fornece !$ e $_ , mas eles não são expandidos e acho muito perigoso usá-los diretamente.

Eu tentei (sem sucesso) algumas soluções que encontrei no Stack Overflow sobre como editar o .inputrc e adicionar:

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

Estou mudando para o modo vi no bash, mas estou acostumado a ESC + . e seria bom poder usá-lo, ou encontre um & substituição fácil.

EDIT: Esta questão foi marcada como uma duplicata de uma semelhante que pergunta sobre como recuperar o último argumento com Alt + S. Eu estava perguntando especificamente sobre ESC +. (é o atalho que eu estou acostumado e não é coberto pela outra resposta).

EDIT: Para complementar a solução @chaos ': a seguinte ligação faz ESC +. (bem, realmente '.') cole o último argumento, mas você perde a funcionalidade ponto (.) do Vi:

bind -m vi-command ".":insert-last-argument
    
por sromero 17.04.2015 / 10:57

2 respostas

5

Para mim, funciona quando adiciono o seguinte ao meu .inputrc :

$if mode=vi
"\e.":yank-last-arg
$endif

Então, ao mudar isso rapidamente, o .inputrc deve ser lido novamente:

set -o vi
bind -f .inputrc

Agora, posso obter o último argumento com alt + . .

    
por 17.04.2015 / 13:00
4

Eu tenho usado _ (no modo normal) para fazer isso. Eu achei documentado aqui link .

É fácil lembrar também:

  • $_ se expande para o último argumento
  • <Esc> + _ digita
por 10.05.2015 / 23:29

Tags