Como ativar o yank-nth-arg usando o modo vi no Bash?

3
Hey guys eu estou tentando descobrir como posso tomar meu enésimo argumento, do meu último comando, sem usar o!: nth. Em um bash normal (modo emacs) eu posso fazer isso usando os seguintes atalhos:

<ESC>nth_arg <ESC><c-y>

como posso fazer o mesmo usando o modo bash vi (bash -o vi)?

minhas linhas relevantes .bashrc

set -o vi
#BASH yank-nth-arg: <esc>narg <c-a>y
#BASH yank-last-arg: <a-.>
bind -m vi-insert '"\e.": yank-last-arg'

minha corrente liga-se com ele:

$ bind -lp | grep 'yank'
vi-yank-arg
vi-yank-to
yank
yank-last-arg
yank-nth-arg
yank-pop
# vi-yank-arg (not bound)
# vi-yank-to (not bound)
"\C-y": yank
"\e.": yank-last-arg
# yank-nth-arg (not bound)
# yank-pop (not bound)

atualmente, quando tento fazer o seguinte:

<ESC>1 <ESC><c-y> or <ESC>1 <ALT-c-y>

Eu obtenho um espaço / tabulação, ou nada acontece depois que o prompt (arg: 1) desaparece.

BR

    
por MaikoID 29.10.2014 / 13:56

1 resposta

2

Você também pode usar abaixo da chave de ligação:

bind -m vi-insert '".": yank-last-arg'

ou:

bind -m vi-insert ".":insert-last-argument

Para obter os enésimos argumentos:

bind -m vi-command '"\e-": yank-nth-arg'

Agora você pode usar <ALT>n <ALT>- para obter o enésimo argumento do comando anterior.

    
por 29.10.2014 / 14:23