O comando do Vim precisa de um pouco de explicação para mim

1

Eu tenho usado o Vimgolf como um pouco de desenvolvimento profissional.

Em esta tarefa particular Uma das melhores soluções é o seguinte comando.

<C-V>Gg?ZZ

Eu entendo que ZZ é salvar e sair - e que o controle-v está entrando no modo visual, mas o Gg? parece feitiço para mim.

O Google está me decepcionando um pouco com a pesquisa - não menos porque aparece ? está sobrecarregado no Google e no vim ... Alguém pode escolher isso para mim? g? em qualquer linha dada no vim parece rodar caracteres através de alguma sequência ...: s

    
por Joe 23.10.2012 / 19:40

2 respostas

4

A tarefa é rotar13 a primeira coluna de letras para que correspondam à palavra após for ; a partir daí, é óbvio que as principais soluções executam o equivalente a um rot13 de uma maneira ou de outra. Se deixarmos de fora tudo o que sabemos que não tem relação com a rot13 ou, pelo menos, a mudança de texto… o que nos resta?

Vamos dividir o comando em partes menores:

(<C-V>)(G)(g?)(ZZ)
  • é o modo de bloqueio visual, nada a ver com rot13 ou a alteração de texto.

  • estende a seleção de bloco visual até a última linha do buffer, mais uma vez, nada a ver com rot13 ou alteração de texto.

  • é ... o quê?

  • escreve e fecha o buffer, mais uma vez, nada a ver com rot13 ou alteração de texto.

Depois de tudo isso, g? (o pedaço restante) é a única parte deste comando que não sabemos e que poderia ter algo a ver com a mudança de texto ou, talvez, rot13. Dado o alto grau da solução e a inacreditável terseness de g? , as probabilidades de que ele faz exatamente o que é pedido, rot13, são muito altas.

Ou é?

Para garantir que estamos no caminho certo, vamos perguntar ao Vim:

:h g?

ao qual o Vim responde, na sua voz habitual:

Rot13 encode {motion} text.

Sem o Google, sem internet. Apenas matéria cinzenta e Vim; a dupla imbatível!

    
por 23.10.2012 / 21:43
1

G significa "ir para a última linha". Então, se você está no começo do arquivo e pressione

<C-V>G

você acaba marcando a primeira coluna de cada linha. Agora

g?

significa fazer uma encriptação rot13 . Isso consiste em rotacionar as letras 13 pontos abaixo do alfabeto. Essa criptografia extremamente fraca é usada em fóruns on-line para ocultar linguagem ofensiva, spoilers e outras coisas que você não quer que as pessoas leiam a menos que realmente queiram.

    
por 23.10.2012 / 20:16

Tags