Como edito o comando shell atual no VI

31

Eu já vi em blogs em máquinas Linux que você pode editar o comando atual do bash shell no VI (ou o que o EDITOR estiver definido) pressionando ctrl-x, ctrl-e.

Isso não parece funcionar no 10.8. Alguma idéia de como editar o comando bash atual no editor padrão?

Scott Walter
fonte
Isso deve funcionar em 10.8 (pelo menos para mim). Você tentou desabilitar FCEDIT e EDITOR?
Nohillside
A documentação do C-xC-e está aqui - o que há na sua VISUALvariável?
Glenn Jackman
não é sobre 10.8. Estou no 10.8 e funciona bem comigo. Não alterei nada no meu .bash_profile para ativar isso.
Vincent
1
Nota: Esta pergunta Apple.SE é basicamente a mesma pergunta Superusuário "Estou usando o Bash no 'modo vi'. Qual é a sequência de teclas de atalho para editar a linha de comando atual usando um editor externo?"
Inesquecívelid
1
Acabei de perceber que estava fazendo Ctrl + (x, e) (mantendo pressionada a tecla Ctrl, pressionando x, pressionando e, liberando o controle) - é por isso que não funcionou para mim. Quando mudei para pressionar duas teclas claras Ctrl-x, solte Ctrl, Ctrl-e - tudo começou a funcionar perfeitamente!
precisa

Respostas:

32

Você deseja set -o vi(adicione-o ao seu ~/.bashrc). Em seguida, para editar a linha atual, basta pressionar Escpara entrar no modo de comando.

Consulte http://www.gnu.org/software/bash/manual/bashref.html#Readline-vi-Mode

Para editar o comando atual em um editor de tela cheia, defina sua VISUALvariável de ambiente como vim(presumo que você queira vim) e, em modo de comando no comentário atual, pressione v.

Glenn Jackman
fonte
5
pressionar o "v" era o molho secreto que estava faltando. obrigado.
Scott Walter
2
É possível obter este vcomando no modo emacs (não-vi)?
Alex Kahn
10
Basta pressionar Ctrl-X e Ctrl-E.
albapa
7

Você edit-and-execute-commandpode não estar vinculado ao vimodo. Experimentar:

bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'

Para torná-lo permanente, adicione essa linha ao seu ~/.inputrcarquivo.

(por meio desta resposta ; agrade a @unforgettableid pelo link)

Estufado
fonte