Eu costumava ter um colega de trabalho que era muito bom em UNIX.
Ele me mostrou como usar as combinações de teclas do Vi para editar meus comandos do shell.
Ele colocou o comando em um arquivo que era executado sempre que eu fazia login.
Desde então, mudei para um projeto diferente.
Infelizmente não me lembro como configurar isso.
Há alguém aqui que saiba como usar as combinações de teclas do Vi para editar comandos no terminal?
Como posso tornar essa configuração permanente?
Responder1
Você está falando sobre o melhor recurso de todos os tempos!
Você pode usar comandos vi para editar comandos shell (e histórico de comandos) adicionando isto ao seu .bashrc
arquivo:
set -o vi
Você também pode executar esse comando na linha de comando para afetar apenas a sessão atual.
Se você não usa o bash, substitua o arquivo rc apropriado pelo seu shell.
Isso permite que você use comandos vi para editar qualquer comando...
Você também pode usar je kpara percorrer seu histórico (depois de pressionar ESC).
Você também pode usar /(depois de pressionar ESC) para procurar comandos antigos.
Em outras palavras, para encontrar aquele comando superlongo que cp
você executou há dez minutos:
ESC/CPENTER
Então você pode percorrer todos os comandos correspondentes em seu histórico com ne N.
Tudo isso me torna 10 trilhões de vezes mais produtivo na linha de comando!
Responder2
Se você estiver usando o bash, como jahroy e evil otto já responderam, você pode usar
set -o vi
para fazer com que o bash use comandos de edição no estilo vi.
Depois de fazer isso, você pode digitar Esc vpara iniciar o editor vi com um arquivo temporário contendo uma cópia da linha de comando atual. Você pode editar o comando, até mesmo substituindo-o por múltiplas linhas; quando você salva o arquivo ( :wq
), o shell executará os comandos editados.
Se você preferir
set -o emacs
você pode usar Ctl-XCtl-Epara fazer a mesma coisa. Ele usará seu editor preferido $EDITOR
, não necessariamente o emacs.
(Pessoalmente, eu uso o vi (na verdade, vim) para a maior parte da minha edição, mas prefiro set -o emacs
no shell; entrar e sair do modo de inserção é ótimo para editar arquivos, mas estranho para comandos interativos. YMMV.)
Responder3
Você pode usar set -o vi
para alterar seus comandos de edição de linha como @jahroy postou, mas você pode estar pensando no fc
comando (disponível no bash e acho que ksh, mas provavelmente não no tcsh), que colocará o comando anterior em um editor (FCEDIT ou EDITOR , que você provavelmente configurou como vi) e então executa o comando ao sair do editor. Consulte a página de manual ou help fc
para obter detalhes, ou apenas experimente.
Responder4
Na verdade, esta é de fato a maior característica de todos os tempos. Porém, há mais:
Crie um arquivo chamado
.editrc
contendo a linha
bind -v
Linha de edição, é uma biblioteca de versão licenciada BSD que fornece serviços semelhantes aos do readline. Esse .editrc definirá suas combinações de teclas para o modo vi no shell de linha de comando do MySQL ou em qualquer aplicativo que não use readline.
Fiquei um pouco esquecido com o passar dos anos, então meu .zshrcfornece alguns wrapperspara o modo vi, para me mostrar em que modo estou na linha de comando. É legal.
Eu sei que no zsh você pode digitar
bindkey -L
e obtenha a lista de atalhos de teclado. Tenho certeza que o bash deve ter algo semelhante. Nem todas as chaves vi estão vinculadas por padrão. Amarre-os como achar melhor e você estará pronto para as corridas.