Eu tenho duas máquinas diferentes (casa e trabalho) executando o Ubuntu 18.04. Ontem à noite vim
congelou em casa. Eu estava no modo insert e digitando e fui salvar ( esc :w
) e nada aconteceu. A barra de status ainda lê -- INSERT --
, o cursor ainda está piscando onde estava. Eu estava travado. Não consegui encontrar uma saída. Eu não conseguia digitar (nada acontecia quando eu digitava), não conseguia me mover (as setas para cima e para baixo não faziam nada). Ele estava preso no modo de inserção com o cursor piscando onde estava.
Eu estava definitivamente multitarefa e provavelmente apertei algumas outras teclas lá, mas não sei quais teclas. No entanto, já era tarde, então fechei a janela do terminal e tentei novamente (estava digitando uma mensagem de confirmação do git). Aconteceu novamente no meio da minha digitação, então mudei para git commit -m "don't need an editor for this"
. E então eu desliguei meu computador e parei de funcionar.
Achei que estava apenas cansado, mas aconteceu comigo hoje no trabalho em um laptop completamente diferente. Mais uma vez eu estava multitarefa e não posso jurar que não digitei nenhuma sequência de teclas bizarra, mas se o fiz foi acidental. E outras guias no mesmo terminal não estão congeladas.
Estou acostumado a ficar preso no visual
modo vim. Isso é um truque que aprendi. Mas preso no modo de inserção? Alguma idéia sobre o que eu poderia ter feito e como sair disso?
Por uma sugestão de comentário, tentei olhar, .viminfo
mas o único .viminfo
que vejo é de propriedade exclusiva root
e só parece mostrar coisas com as quais eu teria editado sudo
:
# Input Line History (newest to oldest):
# Debug Line History (newest to oldest):
# Registers:
# File marks:
'0 1 0 /etc/neomuttrc
|4,48,1,0,1531789956,"/etc/neomuttrc"
'1 1 66 /etc/apt/sources.list.d/signal-bionic.list
|4,49,1,66,1530816565,"/etc/apt/sources.list.d/signal-bionic.list"
'2 51 0 /etc/apt/sources.list
|4,50,51,0,1530816531,"/etc/apt/sources.list"
# Jumplist (newest first):
-' 1 0 /etc/neomuttrc
|4,39,1,0,1531789956,"/etc/neomuttrc"
-' 1 66 /etc/apt/sources.list.d/signal-bionic.list
|4,39,1,66,1530816565,"/etc/apt/sources.list.d/signal-bionic.list"
-' 1 66 /etc/apt/sources.list.d/signal-bionic.list
|4,39,1,66,1530816565,"/etc/apt/sources.list.d/signal-bionic.list"
-' 51 0 /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-' 51 0 /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-' 51 0 /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-' 51 0 /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-' 1 0 /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"
-' 1 0 /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"
-' 1 0 /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"
-' 1 0 /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"
# History of marks within files (newest to oldest):
> /etc/neomuttrc
* 1531789952 0
" 1 0
> /etc/apt/sources.list.d/signal-bionic.list
* 1530816564 0
" 1 66
^ 1 67
. 1 66
+ 1 66
> /etc/apt/sources.list
* 1530816454 0
" 51 0
Parece estranho que eu não tivesse um sem privilégios .viminfo
, mas eu tive sudo udpatedb
e locate .viminfo
ainda não apareceu mais do que um arquivo de propriedade do root.
Uma chave que eu frequentemente coloco o dedo gordo por engano é CtrlS; que interrompe todas as saídas do terminal até que a CtrlQseja digitado.
Esse é o
XON/XOFF
fluxo de controle, que é habilitado por padrão, e^S
and^Q
são as chaves padrãoVSTART
e respectivamente -- veja as páginas de manual e .VSTOP
stty(1)
termios(3)
Você pode desativá-lo com:
vim
não irá reativá-lo como parte da alteração das configurações do terminal.vim está congelado; vim versão 81 no KNOPPIX 8.6;
acontece com muita frequência, e encontrei a razão do meu caso;
Mesmo que eu não esqueça de fazer a mudança nas opções para "noincsearch" o vim começa a pesquisar e fica ocupado por 10 a 20 horas. Porque o arquivo que estou editando é muito grande.
Isso pode ser causado por um erro de digitação ou por uma pesquisa "normal" para trás por um texto raramente.
O problema é que, nesse estado, o vim não é interrompível.
CTRL-C não funciona. Nenhuma outra sequência de teclas ou evento de mouse pode parar o vim.
E nenhum comando que estou enviando para o vim ou para o shell bash por "writevt" tem efeito.
Pelo menos o vim deve ser responsável por um SINAL, por exemplo, USR1. Mas Vim não reage.
Além disso, é ruim que o vim não mostre de forma alguma que o vim está ocupado e que está, por exemplo, pesquisando.
Os utilitários do sistema operacional mostram apenas que o processo está em execução. Posso enviar os sinais SIGSTOP e SIGCONT. Mas estes não ajudam.
Atenciosamente [email protected]
Se você tiver o CoC instalado, tente aguardar alguns minutos.
Eu tenho tido congelamentos ocasionais de Vim. Enquanto procurava por uma resposta agora, ele se descongelou e um erro de CoC apareceu.
Atualizarei este post com mais detalhes assim que (ou se) chegar à raiz real do problema, mas, por enquanto, espere alguns minutos antes de cancelar sua sessão.