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?


É 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).


É 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 .


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.