Não há padrão. A ligação para 'yank-last-arg' (conforme listado por 'bind -p') desaparece quando você alterna para o modo vi.
bind '"\e."':yank-last-arg
vai lhe dar a mesma ligação de volta (ou escolher outra coisa)
Eu estou convencido (no Stack Overflow) a usar meu amado bash no modo vi. Até agora me acostumei bastante e gostei.
No entanto, eu realmente sinto falta de um recurso: No modo emacs, você pode inserir o último parâmetro do comando anterior pressionando "ESC". (Isto é, pressione escape seguido pelo.)
Existe uma ligação padrão para inserir o último parâmetro no modo vi? Eu não consegui encontrar um e realmente sinto falta desse comando ...
Há (vi-yank-arg), por padrão, mapeado para "_". Isso deve fazer o que você quiser (no modo de comando).
Não é exatamente o mesmo, mas em qualquer modo você pode digitar !$
e será substituído pela última palavra do comando anterior. Encontre mais coisas desse tipo no manual .
O arquivo ~ / .inputrc pode configurar o mapa-chave (você pode gerá-lo por manual se não for encontrado). Adicione o seguinte comando no ~ / .inputrc :
"\e.": yank-last-arg
"\e_": yank-last-arg
Meu ~ / .inputrc é:
set completion-ignore-case on
set show-all-if-ambiguous on
set show-all-if-unmodified on
set editing-mode vi
set keymap vi-insert
"\C-p": previous-history
"\C-n": next-history
"\C-a.":beginning-of-line
"\C-e.":end-of-line
"\e.": yank-last-arg
"\e_": yank-last-arg
Você pode encontrar os detalhes sobre readline e bind -p
aqui: link
E algumas informações sobre keyblings do Vi no bash e Folha de dicas do modo de edição Readline VI
Dentro do seu .bashrc, adicione estes:
set -o vi
bind -m vi-command ".":insert-last-argument
bind -m vi-insert "\C-l.":clear-screen
bind -m vi-insert "\C-a.":beginning-of-line
bind -m vi-insert "\C-e.":end-of-line
bind -m vi-insert "\C-w.":backward-kill-word
Estes irão restaurar o comportamento padrão, não apenas de ESC-dot, mas também de Ctrl-A, Ctrl-E, Ctrl-W e Ctrl-L. Você pode, portanto, desfrutar do bash-vi normal e ainda usar os atalhos que você conhece e ama. Se você precisar de mais ações, apenas marque "man bash" para encontrar o nome da ação readline que você precisa (como "clear-screen", "end-of-line", etc).
Você pode usar $_
para se referir ao último argumento do comando anterior.
As desvantagens são:
Você não pode verificar antes de pressionar Enter que a coisa inserida é o que você pretendia inserir.
Se você usar PROMPT_COMMAND ou uma armadilha DEBUG (não tenho certeza qual, exatamente, causa o problema; tenho ambos em meu .bashrc) para fazer coisas sofisticadas como colocar o comando em execução no título xterm, ele vai atrapalhar $_
.
Tags bash