Fui convencido (no Stack Overflow) a usar meu amado bash no modo vi. Até agora, eu me acostumei muito bem 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". (Ou seja, pressione escape seguido pelo.)
Existe uma ligação padrão para inserir o último parâmetro no modo vi? Não consegui encontrar um e sinto muita falta desse comando ...
bindkey "\e." insert-last-word
history-search-backwards
é inestimável para usuários sérios da linha de comando.Há (vi-yank-arg), por padrão, mapeado para "_". Isso deve fazer o que você deseja (no modo de comando).
fonte
Não é exatamente o mesmo, mas em qualquer um dos modos você pode digitar
!$
e será substituído pela última palavra do comando anterior. Encontre mais coisas no manual .fonte
O arquivo ~ / .inputrc pode configurar o mapa de chaves (você pode gerá-lo manualmente, se não for encontrado). Adicione o seguinte comando ao ~ / .inputrc :
Meu ~ / .inputrc é:
Você pode encontrar os detalhes sobre o readline e
bind -p
aqui: http://linux.about.com/library/cmd/blcmdl3_readline.htmE algumas informações sobre os atalhos de teclado do Vi no bash e no Readline VI Editing Cheat Sheet
fonte
Dentro do seu .bashrc, adicione estes:
Isso restaurará o comportamento padrão não apenas do ponto ESC, mas também das teclas Ctrl-A, Ctrl-E, Ctrl-W e Ctrl-L. Portanto, você pode aproveitar o modo viático do bash normal e ainda usar os atalhos que conhece e adora. Se você precisar de mais ações, basta marcar "man bash" para encontrar o nome da ação de linha de leitura necessária (como "tela limpa", "fim de linha" etc.).
fonte
Você pode usar
$_
para se referir ao último argumento do comando anterior.As desvantagens são:
Não é possível verificar antes de pressionar Enter que a coisa inserida é a que você pretendia inserir.
Se você usar PROMPT_COMMAND ou uma interceptação DEBUG (não tenho certeza qual, exatamente, causa o problema; eu tenho ambos no meu .bashrc) para fazer coisas sofisticadas, como colocar o comando em execução no título do xterm, ele ficará bloqueado
$_
.fonte