Usar ctrl + c em vez de esc para sair do modo de inserção quebra alguma coisa no vi?

15

Ao usar o vi, você pode sair do modo de inserção com Ctrl+ em Cvez do mais tradicional Esc. Existem situações em que seria indesejável usar o antigo em vez do último? Isso quebra alguma coisa que não seja a melhor prática?

MDMarra
fonte
É indesejável acertar o primeiro por acidente, o que gera um erro Type :quit<Enter> to exit Vime me fez procurar no Google como voltar. Bater icom você volta ao modo de inserção.
Noumenon

Respostas:

9

Ctrl-Ce Escnão são os mesmos na vi/ vimna maioria dos modos, incluindo o modo de inserção. A diferença é que Escdispara abreviações enquanto Ctrl-cnão. Se isso é importante para você, depende de você ou algum plug-in usado usar abreviações.


Note-se que é mais seguro para assumir Esce Ctrl-Cque não significam a mesma coisa em vim. Outro exemplo desse mesmo site é ao sair do modo de inserção de bloco (não no vi).

jw013
fonte
É bom saber, mas minha pergunta era sobre como sair do modo de inserção.
precisa saber é o seguinte
@MDMarra Doh, interpretou mal sua pergunta. O modo de inserção ainda é diferente: consulte a resposta atualizada.
jw013
1
Aqui está a diferença mais importante com a qual tive que lidar: a inserção de múltiplas linhas com o modo de bloco visual funciona com Esc e não com Cc.
enfascination
4

Eu acho que você quer dizer vim, não vi.

Isso realmente funciona vim, embora eu não o usaria a menos que tivesse 100% de certeza de que nunca tocaria em um sistema operacional não Linux. O motivo é que outros sistemas operacionais podem ter suas próprias implementações vi, que não implementam isso, e você pode achar que, ao executar vinessas plataformas, o Ctrl-C tem seu próprio comportamento tradicional: interrompa o processo e deixe seu terminal em um estado estranho .

Michael Hampton
fonte
3
Você pode apontar para qualquer viimplementação que ainda exista hoje que não seja compatível Ctrl-C? Veja minha resposta para a diferença real.
Jw013
2

Se você está se referindo vim, há uma pequena diferença. CTRL-Cnão verifica abreviações e não aciona o InsertLeaveevento. Então você ou plugins definiram quaisquer autocmdinstruções que dependem InsertLeave, elas não serão acionadas.

Na documentação oficial http://vimhelp.appspot.com/insert.txt.html :

<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode.  Finish
                abbreviation.

CTRL-C          Quit insert mode, go back to Normal mode.  Do not check for
                abbreviations.  Does not trigger the InsertLeave autocommand
                event.

Você pode definir um mapeamento para CTRL-Ca <esc>, em seguida, ele irá acionar InsertLeave.

wisbucky
fonte