Saindo do modo de inserção de bloco com Ctrl-C

8

No vim, se você estiver no modo de inserção de bloco ( Ctrl-V, Shift-I ) e sair usando Ctrl-C (em vez de Esc ), ele cancelará a edição do bloco (e somente editará a primeira linha).

Por que isso? Em quase todos os outros contextos, Ctrl-C e Esc são sinônimos. (E, idealmente, há uma maneira de corrigir isso - agora me acostumei a fazer Ctrl-C e seria uma pena se eu tivesse que reaprender ...)

    
por Sophie Alpert 05.06.2012 / 19:40

2 respostas

9

Ctrl-c e Esc não têm garantia de serem sinônimos e geralmente diferem. Por exemplo, no modo Insert , Esc ativará as abreviações e entrará no modo Normal , enquanto que Ctrl-c não acione abreviações nem o InsertLeave autocommand e vá direto para o modo Normal . Outro exemplo está no antigo modo de linha de comando vi , Esc executaria o comando como se você tivesse pressionado Enter . O Vim deliberadamente mudou isso porque esse comportamento foi considerado não intuitivo e surpreendente, mas você ainda pode ativá-lo adicionando x a 'cpoptions' .

Quanto aos operadores visuais de bloco, a tag de ajuda blockwise-operators tem a seguinte documentação:

Visual-block Insert                     *v_b_I*
With a blockwise selection, I{string}<ESC> will insert {string} at the start
of block on every line of the block, provided that the line extends into the
block.  Thus lines that are short will remain unmodified.  TABs are split to
retain visual columns.

Observe que apenas Esc é mencionado, não Ctrl-c .

Portanto, não, Ctrl-c e Esc não são equivalentes. Nunca é uma vergonha desiludir-se de um equívoco. Depois de perceber isso, você pode decidir o que fazer a seguir. As opções imediatamente óbvias são aprender as diferenças e usar a chave correta, ou decidir que você não precisa da funcionalidade de uma das chaves e remapá-la para corresponder à outra.

    
por 05.07.2012 / 22:37
0

Tente :map ^C esc onde "^ C" é inserido através de CTRL + v então CTRL + c .

    
por 05.06.2012 / 20:47

Tags